【问题标题】:Work with instance in session before save in database在保存到数据库之前在会话中使用实例
【发布时间】:2011-12-21 13:03:13
【问题描述】:

我有一个包含多个步骤的系统。每一步都会增加一个对象实例。 我只想在最后一步将实例保存在 db 中,其他人只需更新我在会话中保存的实例。

我的模型类看起来像这样:

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需要有一个主键值才能使用多对多关系。

我通过使用 pk=0 创建我的 obj 实例成功地获得了想要的结果,但我确信这不是最好的方法,如果有的话。

确实存在一种方法可以做到这一点而不会像这样作弊。

任何帮助都会很棒。

谢谢

【问题讨论】:

    标签: python mysql django session many-to-many


    【解决方案1】:

    您可能会发现this question 的答案很有帮助。

    快速参考摘要:

    我可能会在解释 The save() method 的部分中补充说明文档具体解释了如何处理 M2M 字段。

    其中,我推荐使用 ModelForms。希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      相关资源
      最近更新 更多