首页 > 解决方案 > Django:Pre_Save 信号期间的 Many2Many 关系?

问题描述

假设我们有以下类:

类“配置”

class Config(models.Model):
    name = models.CharField(max_length=40, editable=True, blank=False, null=False)
    nodes = models.ManyToManyField(HierarchyNode_MPTT)
    element = models.ForeignKey(ForecastConfigurationLayout, on_delete=models.PROTECT, default=None)

nodes属性表示 M:N 关系。我想elements基于nodes. 因此,在保存过程中(理想情况下pre_save)我需要将所有节点传递给返回uuidfor的类/方法element

所以,我去管理应用程序,创建一个类型的对象,Config在屏幕上选择我的节点并点击保存。现在,系统应该调用一个类/方法,传递节点并element使用uuid. 这是行不通的,因为映射表中的 M:N 关系在Class并且Nodes还没有正确的条目(因为它是pre_save)。我想避免post_save,因为nodes属性需要允许Null值。

任何想法都非常感谢。

谢谢,塞巴斯蒂安

标签: djangodjango-formsdjango-mptt

解决方案


我正在使用动作m2m_changed信号post_add。适合我的用例。


推荐阅读