我使用SQLite使用Django 1.8.4在我的dev的機器,我有這些模型:Django的unique_together可空ForeignKey的
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',)
我碰到合適的遷移和Django管理登記他們。所以,使用管理員我已經做了這個測試:
- 我能夠創建ModelA記錄和Django禁止我創建重複記錄 - 如預期!
- 我不能夠創建相同的ModelB記錄時field_b不爲空
- 但是,使用field_d爲空
我的問題是,當我能夠創建相同的ModelB記錄:怎麼辦我將unique_together應用於可空的ForeignKey?
我發現這個問題的最近的答案有5年......我確實認爲Django已經發展並且問題可能不一樣。
的可能的複製([Django的唯一一起約束失敗?] http://stackoverflow.com/questions/17510261/django-unique-together-constraint-failure) – Ivan
@Ivan我也試過這篇文章,但它並沒有幫助我與modelformset。當試圖在相同的formset中創建相同的記錄時,Django不會禁止。用戶仍然能夠創建重複項目 – MatheusJardimB