Недавно я узнал о преимуществах использования 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?