Как добавить unique_to вместе с универсальным внешним ключом в Django
Я не уверен, что делаю это неправильно или есть какая-то проблема при обработке уникальных ограничений при работе с GenericForeign Relations в Django.
Когда я пытаюсь сохранить объект (например, в Admin), я получаю уникальную ошибку ограничения (поднимает 500) из базы данных, но не ValidationError в Admin (UI).
Ниже мой фрагмент кода,
У меня есть одна общая модель отношений, как показано ниже,
class Targeting(models.Model):
TARGETING_CHOICES = (
('geo', "Geo targeting"),
('other', "Other targeting"),
)
targeting_type = models.CharField(max_length=64, choices=TARGETING_CHOICES, null=False)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
class Meta:
unique_together = ('content_type', 'object_id', 'targeting_type')
И моя другая модель, использующая это,
class MyModel(models.Model):
name = models.CharField(max_length=60, db_index=True)
targeting = GenericRelation('Targeting')
Возникло исключение:
duplicate key value violates unique constraint "mymodel_targeting_targeting_type_0dff10ee_uniq"
DETAIL: Key (targeting_type, content_type_id, object_id)=(geo, 18, 188) already exists.
Что-то не так с тем, как я это реализовал? или что-то не предназначено для такого использования?
Любая помощь очень ценится. Спасибо
1 ответ
Вы не получите ValidationError здесь, потому что он не может быть проверен без дополнительного запроса, и django не создаст этот запрос сам по себе. Если вам нужно это подтверждение, вы должны написать его самостоятельно.