AttributeError: объект 'GenericForeignKey' не имеет атрибута 'null' - PullRequest
0 голосов
/ 11 июня 2019

Я получаю очень странную ошибку, когда пытаюсь использовать какой-либо метод (удаление, сохранение и т. Д.) В модели, содержащей общий внешний ключ.Моя модель может содержать различные типы карт и задание на их обработку:

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 голосов
/ 11 июня 2019

решаемая. Оставьте это здесь на случай, если кто-то столкнется с той же проблемой. Проблема была связана с проектом, а не с Джанго. Для моделей ContentType, которые я использовал, требовалось определенное поле и каким-то образом с общим внешним ключом, который теряется (хотя с обычным внешним ключом это кажется просто нормальным). Добавление его в качестве свойства модели сделало свое дело:

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