AttributeError:'GenericForeignKey'对象没有属性'null'

时间:2019-06-11 09:15:55

标签: django-models attributeerror generic-foreign-key

当我尝试在具有通用外键的模型上尝试任何方法(删除,保存等)时,遇到一个非常奇怪的错误。我的模型可以容纳不同类型的卡类型,并可以处理它们:

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')

1 个答案:

答案 0 :(得分:0)

已解决。 万一有人遇到同一问题,就把它留在这里。问题与项目有关,与Django有关。 我正在使用的ContentType模型需要一个特定的字段,并且以某种方式丢失了一个通用外键(而使用普通外键似乎还不错)。 将其添加为模型的属性可以达到目的:

@property
def required_field(self):
    return self.content_object.some_linked_model.required_field