当我在包含通用外键的模型上尝试任何方法(删除、保存等)时,我遇到了一个非常奇怪的错误。我的模型可以容纳不同类型的卡片类型,以及处理它们的工作:
class JobCards(models.Model):
class Meta:
unique_together = ('content_type', 'object_id')
content_type = models.ForeignKey(
ContentType,
on_delete=models.CASCADE,
help_text=_('Card type')
)
object_id = models.PositiveIntegerField(
help_text=_('Card id')
)
content_object = GenericForeignKey()
job = models.ForeignKey(
Job,
on_delete=models.CASCADE
)
所以像这样的操作:
JobCards.objects.create(content_object=card, job=job)
或者
job_card = JobCards.objects.get(
job=job,
content_type=ContentType.objects.get_for_model(card),
object_id=card.id
)
job_card.delete()
将因此类错误而失败。
我应该提到我在卡片模型中放置了两个 GenericRelation,但即使删除它们也不会改变最终结果:
job_cards = GenericRelation(JobCards, related_query_name='card')