【问题标题】:Django model + Unique column on two tables (inheritance)Django模型+两个表上的唯一列(继承)
【发布时间】:2020-03-16 01:04:59
【问题描述】:

如何根据子表和父表的列创建约束(在数据库上保持完整性)?

型号:

class DBMaster(models.Model):
        col1 = models.CharField()

 class DBOne(DBMaster):
        col_own....
        col1 - should be this same how in DBMaster

    class Meta:
        constraints = [
            models.UniqueConstraint(fields=['col_own', 'col1'], name='CON_UNIQUE_1')
        ]

我们可以使用物化视图,但我们不会。 有什么建议吗?

【问题讨论】:

  • 为什么没有 unique_together

标签: django inheritance model


【解决方案1】:

我认为你应该在你的模型中使用unique_together 并且你的基础模型应该是抽象的

 class BaseDBMaster(models.Model):
    col1 = models.CharField()

    class Meta:
        abstract = True

 class DBMaster(BaseDBMaster):
     pass

 class DBOne(BaseDBMaster):
    col_own....
    col1 - should be this same how in DBMaster

    class Meta:
        unique_together = ('col1', 'col_own')

【讨论】:

  • 这张表不能抽象
  • 您必须使用抽象模型进行继承。我编辑了答案以使您的 DBMaster 表保持活力
猜你喜欢
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多