相关疑难解决方法(0)

Django unique_together与可空的ForeignKey

我在使用Sqlite的开发机器中使用Django 1.8.4并且我有这些模型:

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',)
Run Code Online (Sandbox Code Playgroud)

我已经运行了正确的迁移并在Django Admin中注册了它们.所以,使用Admin我做过这个测试:

  • 我能够创建ModelA记录,Django禁止我创建重复记录 - 正如预期的那样!
  • 当field_b不为空时,我无法创建相同的ModelB记录
  • 但是,当使用field_d为空时,我能够创建相同的ModelB记录

我的问题是:如何将unique_together应用于可空的ForeignKey?

我发现这个问题的最新答案有5年......我确实认为Django已经进化了,问题可能不一样.

django django-models django-forms django-validation

18
推荐指数
3
解决办法
6328
查看次数