我的应用程序的用例是我将有不同类型的用户。它们是:
他们有自己的特点。你知道吗
1用户
2代理
3机构
4制造商
[注:代理商有代理商。制造商可能是 与代理机构有关联或可以直接有代理机构。]你知道吗
为此,我以这样的方式设计了我的模型
class Agency(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(
max_length=200,
blank=False,
null=False)
city = models.CharField(max_length=150, blank=False, null=False)
street = models.CharField(max_length=150, blank=True, null=True)
country = models.CharField(max_length=150, blank=True, null=True)
mobile_number = PhoneNumberField()
email = models.EmailField(blank=False, null=False)
vat_number = models.CharField(max_length=40, blank=False, null=False)
agent/models.py
class Agent(models.Model):
SEX_CHOICE = (
('male', 'Male'),
('female', 'Female'),
)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
agencies = models.ForeignKey(
Agency,
related_name="agents",
on_delete=models.CASCADE)
manufacturers = models.ForeignKey(
Manufacturer,
related_name="agents_manufacturer",
on_delete=models.CASCADE,
blank=True,
null=True)
first_name = models.CharField(
max_length=120,
blank=False,
null=False)
middle_name = models.CharField(
max_length=120,
blank=True,
null=True)
last_name = models.CharField(
max_length=120,
blank=False,
null=False)
date_of_birth = models.DateField(blank=True, null=True)
sex = models.CharField(max_length=6, choices=SEX_CHOICE)
city = models.CharField(max_length=150, blank=False, null=False)
street = models.CharField(max_length=150, blank=True, null=True)
country = models.CharField(max_length=150, blank=True, null=True)
mobile_number = PhoneNumberField()
制造商/型号.py地址:
class Manufacturer(models.Model):
owner = models.ForeignKey(
User, on_delete=models.CASCADE, related_name="manufacturer")
agency = models.ForeignKey(
Agency,
blank=True,
null=True,
related_name="agency_manufacturer",
on_delete=models.CASCADE)
name = models.CharField(
max_length=200,
blank=False,
null=False)
city = models.CharField(max_length=150, blank=False, null=False)
street = models.CharField(max_length=150, blank=True, null=True)
country = models.CharField(max_length=150, blank=True, null=True)
mobile_number = PhoneNumberField()
email = models.EmailField(blank=False, null=False)
vat_number = models.CharField(max_length=40, blank=False, null=False)
我使用了django rest auth进行身份验证。当我转到/rest-auth/registration
像username,password1,password2这样的字段就会出现。但是我需要哪种类型的用户,他/她也是。我如何处理这种情况?因为,用户应该能够以代理或代理或制造商的身份登录。有人能帮我吗?你知道吗
我建议不要使用多个用户模型。这是因为,无论您在哪里需要对用户进行操作,您都会将复杂性引入到您的逻辑中。你知道吗
此外,您将为不同的用户获得相同的id,并且您将遇到一些问题来处理它。你知道吗
我建议您创建一个自定义用户模型,并引入一个名为“角色”的东西,它将告诉您它是什么类型的用户。你知道吗
然后,可以将用户配置文件添加到模型中,以根据用户的角色添加其他信息。你知道吗
具有角色属性的用户模型示例:
对于概要文件,可以添加一个名为user profile的OneToOneField(可以查看django rest文档how do)。你知道吗
要进行不同类型的注册,可以从以下视图开始:
并将其用于不同类型的角色,如:
您可以从
django.auth.models.User
扩展所有模型。或者创建自己的用户模型并从中扩展所有模型。你知道吗当您想检测用户类型时,请使用如下代码:
要从用户模型扩展模型,只需更新代码,如下所示:
相关问题 更多 >
编程相关推荐