首页 > 解决方案 > django模型的继承

问题描述

我想要两种注册类型。例如:雇员和雇主类型。我想要两种不同的形式。我覆盖 AbstractUser 并在我使用这个类之后(继承)

class User(AbstractUser):
  
  age=models.BooleanField(default=True)


class employee(User):
  is_employee=models.BooleanField(default=True)
  ser=models.BooleanField()
  sag=models.CharField(max_length=1)

  class Meta:
    verbose_name="employee"


class employer(User):
  is_employer=models.BooleanField(default=True)
  address=models.CharField(max_length=100)

但是当我保存员工或雇主类时也创建了用户类。当我只保存员工而不是用户时,我可以做什么

标签: pythonpython-3.xdjangodjango-models

解决方案


我认为这取决于 User 表的状态 - 你现在拥有它的方式将有一个 User 表和一个 Employee 表以及一对一的关系。

如果您希望 Employee 和 Employer 表都包含“年龄”属性,则必须使 User 表抽象。

https://docs.djangoproject.com/en/3.1/topics/db/models/#model-inheritance

这样做的方法是:

class User(AbstractUser):
    class Meta:
          abstract = True
    
    age=models.BooleanField(default=True)

即使您从 Abstract User 继承,我也不认为 Meta 设置是继承的。


推荐阅读