python - 在保存到数据库之前在 session 中使用实例

标签 python mysql django session many-to-many

我有一个包含多个步骤的系统。每一步递增一个对象实例。 我只想在最后一步将实例保存在 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/

相关文章:

python - 按值的长度对字典进行排序

python - Airflow 2 : get execution date inside task

mysql - 简单的 SQL 格式

python - 如何更改 django 日期时间格式输出?

python - 我们有一个相当大的 django 站点,运行性能很差,我们需要帮助查找原因

python - VSCode 不显示 discord.py 的代码建议

python - 打印不符合数据间隔设置

mysql - 在 MySql 中创建一个 id 为 CHV18000002 的列

PHP 将 JSON 值解析为 Html 表

Django,获取scheme(http或https),预request.scheme实现