Использование атрибута GenericRelation в качестве уникального - PullRequest
0 голосов
/ 25 апреля 2020

Недавно я узнал о преимуществах использования GenericForeignKey и GenericRelation, поэтому я начал переводить некоторые из моих моделей models.ForeignKey () в GenericRelation ().

Я использую стандартные определения внутри своего класса Product:

class Product(models.Model):
    [...]
    content_type = models.ForeignKey(ContentType, on_delete=models.DO_NOTHING)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

До перехода в GenericRelation одна из моих моделей использовала unique_together:

class Rank(models.Model):
    pub_date = models.DateField(db_index=True)
    product = models.ForeignKey(Product, on_delete=models.DO_NOTHING)
    day_rank = models.IntegerField()

    class Meta(object):
        unique_together = ['pub_date', 'product']

Однако, когда я пытаюсь изменить атрибут продукта Rank на этот:

[...]
    product = GenericRelation('Product', on_delete=models.DO_NOTHING)

    class Meta(object):
            unique_together = ['pub_date', 'product']

Я получаю следующую ошибку:

«unique_together» относится к полю «product», которое не является локальным для модели «Rank».

Можно ли найти решение этой ошибки? Почему я смог использовать ForeignKey, а не GenericRelation при определении unique_together?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...