我的数据库中有两个模型,如果我什么都不做,“创意”将看起来像这样:
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
是,我希望ModelA
的name
属性不可为空,但是以这种方式编写它,尤其是当您考虑到我有大约10个不同的字段要在几乎相同的情况下编写时,感觉很不-干。当然,有更好/更聪明的方法吗?
请注意,这与验证无关,因此将空白检查移到表单中并不能解决问题。我想数据库列是NOT NULL
对ModelA
和NULL
对ModelB
。
ModelA
并且ModelB
可能代表的实体与您列出其属性时所显示的实体没有太多共同之处。一个人仅需生存就需要价值,而另一个人并没有表明他们的行为和责任这一事实需要独立的代表。他们为您做不同的事情。