Я использую Django 1.8.4 в своей машине dev, используя Sqlite, и у меня есть эти модели:
class ModelA(Model):
field_a = CharField(verbose_name='a', max_length=20)
field_b = CharField(verbose_name='b', max_length=20)
class Meta:
unique_together = ('field_a', 'field_b',)
class ModelB(Model):
field_c = CharField(verbose_name='c', max_length=20)
field_d = ForeignKey(ModelA, verbose_name='d', null=True, blank=True)
class Meta:
unique_together = ('field_c', 'field_d',)
Я выполнил надлежащую миграцию и зарегистрировал их в Admin. Таким образом, используя Admin, я сделал следующие тесты:
- Я могу создавать записи ModelA, и Django запрещает мне создавать повторяющиеся записи - как и ожидалось!
- Я не могу создать идентичные записи ModelB, когда field_b не пуст
- Но я могу создавать идентичные записи ModelB при использовании field_d как пустых
Мой вопрос: как я могу применить unique_together для nullable ForeignKey?
Самый последний ответ, который я нашел для этой проблемы, - 5 лет... Я думаю, что Django развился, и проблема может быть не такой.