在我的情况下,我有两个模型:设备和资产,它们都有自己的字段,但它们应该共享一个唯一的字段:asset_number。通过共享,我的意思是在创建设备时,输入的asset_number用户将检查设备和资产数据库。如果它已经存在于任何中,那么将会提示告诉用户这不是唯一的。
对于一个型号,通过设置unique = True可以轻松完成。但是,如果我想为两个模型做,我该怎么办?
TIA
答案 0 :(得分:1)
这根本不是一个好主意。如果资产和设备有不同的字段,那么它们应该是不同的类。 如果你继承使它们共享一个密钥,那么你最终将得到一个根本不能反映现实的数据库。 在视图中强制执行唯一性比破坏模式更好。
答案 1 :(得分:0)
我认为最好的解决方案是创建一个父类,并使Asset
和Equipment
继承它。
例如,您可以使用BaseAsset
唯一字段创建asset_id
课程。由于这两个类将共享asset_id
的同一个表,因此它们不会发生冲突。
class BaseAsset(models.Model):
asset_id = models.IntegerField(unique=True)
class Asset(BaseAsset):
.
.
.
class Equipment(BaseAsset):
.
.
.