django:如何让两个模型共享一个唯一的主键

时间:2016-10-12 15:59:42

标签: django django-models

在我的情况下,我有两个模型:设备和资产,它们都有自己的字段,但它们应该共享一个唯一的字段:asset_number。通过共享,我的意思是在创建设备时,输入的asset_number用户将检查设备和资产数据库。如果它已经存在于任何中,那么将会提示告诉用户这不是唯一的。

对于一个型号,通过设置unique = True可以轻松完成。但是,如果我想为两个模型做,我该怎么办?

TIA

2 个答案:

答案 0 :(得分:1)

这根本不是一个好主意。如果资产和设备有不同的字段,那么它们应该是不同的类。 如果你继承使它们共享一个密钥,那么你最终将得到一个根本不能反映现实的数据库。 在视图中强制执行唯一性比破坏模式更好。

答案 1 :(得分:0)

我认为最好的解决方案是创建一个父类,并使AssetEquipment继承它。

例如,您可以使用BaseAsset唯一字段创建asset_id课程。由于这两个类将共享asset_id的同一个表,因此它们不会发生冲突。

class BaseAsset(models.Model):
    asset_id = models.IntegerField(unique=True)

class Asset(BaseAsset):
    .
    .
    .

class Equipment(BaseAsset):
    .
    .
    .