创建可以具有两种类型之一的Django模型

时间:2018-10-02 00:19:55

标签: django django-models

我有一个模型Client,它可以是以下两种类型之一:PJPF。这意味着 Client 可以具有PJ模型的字段或PF模型的字段。

但是我不确定如何使用Django的模型 admin 应用程序来做到这一点。我想给用户一个选择 Client 是哪种类型的选项,然后适当的字段将显示给他/她。

有人可以帮助我解决这个问题吗?我应该使用某种设计模式还是应该创建模型?

谢谢。


模型PF

class PF(models.Model):
    name = models.CharField(max_length=512)
    card = models.IntegerField(unique=True)

模型PJ

class PJ(models.Model):
    ie = models.IntegerField(unique=True, null=True, blank=True)

模型Client

class Client(models.Model):
    type = models.SmallIntegerField(default=0) # 0=PF, 1=PJ

1 个答案:

答案 0 :(得分:0)

首先,我建议您看一下这两个模型之间的共性,并尽可能使用继承。如果类型字段不可避免,我建议改用CharField with choices

如果两个模型完全不同,我建议将这两个模型完全分开,并将它们命名为InternalClient,ExternalClient,但是名称对数据模型有意义。