簡體   English   中英

Django 1.10:刪除帶有GenericRelation的模型時出錯

[英]Django 1.10: Error when deleting a model with a GenericRelation

在我的項目中,我使用GenericRelation通過第三個模型ABMapping將從類A繼承的模型映射到類型B的模型。

models.py:

class A(models.Model):
    b = GenericRelation(B)

    class Meta:
        abstract = True

class ABMapping(models.Model):
    b = models.ForeignKey(B)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

class B(models.Model):
    x = ...
    y = ...

在Django管理員中,當我嘗試刪除A的子對象時,出現錯誤“無法將關鍵字u'object_id'解析為字段。選擇為:x,y,id和abmapping。” 似乎正在嘗試從ABMapping中獲取一個字段,但在B中找到它。

如您所見,我將模型縮減到最低限度,但問題仍然存在。

即使刪除A的子類對象的所有ABMappings,也會出現相同的問題。

關於StackOverflow的所有看似相關的問題都與人們抱怨級聯刪除沒有發生有關……但是我什至無法進行頂級刪除。

這些模型的所有功能都能正常運行一段時間……除了從管理員刪除的問題外,這從一開始就沒有起作用。 我在這里想念什么?

謝謝!

您的A模型與B沒有關系,與ABMapping有關系。 因此,A中的關系應為GenericRelation(ABMapping)

存在使用另一種模型作為連接表的多對多關系的概念,但其中一種需要實際的ManyToManyField,並帶有through = ABMapping參數,而另外兩種,如果其中一種模式不可行,兩個外鍵是GenericForeignKey。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM