【问题标题】:Django m2m_changed signal for GenericRelation, is it possible?GenericRelation 的 Django m2m_changed 信号,有可能吗?
【发布时间】:2020-07-15 13:03:12
【问题描述】:

它可以用于泛型关系吗?我没有在文档中看到它。

获得直通表的天真尝试:

In [4]: Asset.related_images.through
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-4-d541db71a7a5> in <module>()
----> 1 Asset.related_images.through

AttributeError: 'ReverseGenericManyToOneDescriptor' object has no attribute 'through'

【问题讨论】:

    标签: python django django-models django-signals


    【解决方案1】:

    不,你不能使用它。通用关系是GenericForeignKey(多对一)的反向关系,而不是多对多关系。因此,不存在链接两个模型的直通模型,而是一个模型通过 GenericForeignKey 直接链接到另一个模型。如果您想监听更改事件,您必须连接到包含 GenericForeignKey 的模型的 pre_savepost_save

    您可以在自定义直通模型中使用两个 GenericForeignKey 字段构建某种通用的多对多关系,但 Django 不支持它,因此您必须自己发送信号。

    【讨论】:

      猜你喜欢
      • 2013-09-05
      • 2011-09-21
      • 2018-11-10
      • 2012-09-23
      • 2018-03-28
      • 2019-10-17
      • 2013-05-10
      • 2012-07-26
      • 1970-01-01
      相关资源
      最近更新 更多