温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Django: child models with the same properties, but different attributes on those properties
django django-models

其他 - Django:具有相同属性,但这些属性具有不同属性的子模型

发布于 2020-03-31 23:32:57

我的数据库中有两个模型,如果我什么都不做,“创意”将看起来像这样:

class AbstractModel(models.Model):

    uuid = models.UUIDField(default=uuid.uuid4)

    class Meta:
        abstract = True


class ModelA(AbstractModel):
    name = models.CharField(max_length=128)


class ModelB(AbstractModel):
    name = models.CharField(max_length=128, blank=True, null=True)

ModelA之间的唯一真正的区别ModelB是,我希望ModelAname属性不可为空,但是以这种方式编写它,尤其是当您考虑到我有大约10个不同的字段要在几乎相同的情况下编写时,感觉很不-干。当然,有更好/更聪明的方法吗?

请注意,这与验证无关,因此将空白检查移到表单中并不能解决问题。我想数据库列是NOT NULLModelANULLModelB

查看更多

提问者
Daniel Quinn
被浏览
13
Simon Dell 2020-02-03 20:30

ModelA并且ModelB可能代表的实体与您列出其属性时所显示的实体没有太多共同之处。一个人仅需生存就需要价值,而另一个人并没有表明他们的行为和责任这一事实需要独立的代表。他们为您做不同的事情。