当我尝试在具有通用外键的模型上尝试任何方法(删除,保存等)时,遇到一个非常奇怪的错误。我的模型可以容纳不同类型的卡类型,并可以处理它们:
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')
答案 0 :(得分:0)
已解决。 万一有人遇到同一问题,就把它留在这里。问题与项目有关,与Django有关。 我正在使用的ContentType模型需要一个特定的字段,并且以某种方式丢失了一个通用外键(而使用普通外键似乎还不错)。 将其添加为模型的属性可以达到目的:
@property
def required_field(self):
return self.content_object.some_linked_model.required_field