如何创建可以为人员和公司处理单个外键的模型对象

时间:2018-04-17 00:49:16

标签: python django inheritance database-design foreign-keys

我正在创建投资对象。投资者可以是人或公司。

如何在django中创建一个可以代表这些类型的模型对象?

以下是我想的几种方式:

1。有两个不需要的外键:

     class Investor(models.Model):
     company = models.ForeignKey('companies.Company',on_delete=models.CASCADE, blank=True, null=True)
     customer = models.ForeignKey('accounts.Customer',on_delete=models.CASCADE, blank=True, null=True)
     investor_name = models.CharField(max_length=255)

2。使用通用关系:

class TaggedItem(models.Model):
    investor_name = models.CharField(max_length=255)
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

第3。客户和公司继承的抽象模型

 class Entity(models.Model)

 class Customer(Entity)

 Class Company(Entity)

最具建筑风格的路线是什么,不会给我带来很多问题?

0 个答案:

没有答案