我有一个包含多个步骤的系统。每一步递增一个对象实例。 我只想在最后一步将实例保存在 db 中,在其他步骤中只需更新我在 session 中保存的实例。
我的模型类是这样的:
class Proposta(models.Model):
Modelo = models.ForeignKey("ModeloVersao", verbose_name="Modelo")
Pacotes = models.ManyToManyField("PacoteModelo", null=True, blank=True)
Opcionais = models.ManyToManyField("ItemModelo", null=True, blank=True)
RevestimentoInterno = models.ForeignKey("RevestimentoInternoModelo", verbose_name="Revestimento Interno")
Cor = models.ForeignKey("CorModelo")
CorSecundaria = models.ForeignKey("CorModeloSecundaria", verbose_name="Cor secundária", null=True, blank=True)
Data = models.DateTimeField(auto_now_add = True)
Status = models.CharField("Status", choices=STATUS_PROPOSTA, max_length=10)
Cliente = models.ForeignKey("Cliente")
这是我的问题: 当我尝试添加或检索 m2m 字段时,它显然会抛出一个 ValueError 并显示消息 'Proposta' instance needs to have a primary key value before a many-to-many relationship can be used。
我通过使用 pk=0 创建我的 obj 实例成功获得了想要的结果,但我确信这不是最好的方法,如果有的话。
确实存在一种无需像这样作弊的方法。
任何帮助都会很棒。
谢谢
最佳答案
您可能会找到 this question 的答案有帮助。
快速引用摘要:
我可能会补充说,文档在解释 The save()
method 的部分专门解释了如何处理 M2M 字段.
其中,我推荐使用 ModelForms。希望这对您有所帮助!
关于python - 在保存到数据库之前在 session 中使用实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001605/