[英]Django user model (Employee and Customer)
我目前正在開發一個涉及兩種類型用戶的移動應用交付系統:“員工”和“客戶”。 每種類型的用戶在應用程序中都有不同的視圖和權限。 此外,如果您願意,每種類型的用戶都會有自己的“個人資料”。 員工的個人資料目的主要是指定公司角色。 客戶資料主要用於保存送貨地址。
我正在嘗試就實現此類目標的最佳實踐獲得一些意見。 我無法決定使用 AbstractBaseUser 還是 AbstractUser 是否更好。
下面是我想要創建的模型及其關系的視覺效果:
下面是我模擬的 user/models.py 文件:
class User(AbstractBaseUser):
USER_TYPES = (
('Employee', 'employee'),
('Customer', 'customer')
)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
email = models.EmailField()
phone_number = models.CharField(max_length=20)
user_type = models.CharField(max_length=8, choices=USER_TYPES)
def __str__(self):
return f'{self.first_name} {self.last_name}'
# if user.user_type == 'Employee'
class EmployeeProfile(models.Model):
EMPLOYEE_ROLES = (
('Driver', 'driver'),
('Production', 'production'),
('Manager', 'manger')
)
user = models.OneToOneField(User, on_delete=models.CASCADE)
role = models.CharField(max_length=12, choices=EMPLOYEE_ROLES)
def __str__(self):
return self.user
# if user.user_type == 'Customer'
class CustomerProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
company = models.CharField(max_length=100)
address = models.CharField(max_length=100)
address_2 = models.CharField(max_length=100)
city = models.CharField(max_length=50)
state = models.CharField(max_length=2, help_text="State Abbreviation (ex: OH)")
zipcode = models.CharField(max_length=5)
def __str__(self):
return self.user
我知道我還需要使用 Django 信號或類似的東西來創建用戶配置文件(對於員工或客戶,在用戶創建時)。
您的代碼有效但是根據設計模式標准,可以說在名為 is_employee 的用戶中放置了一個布爾字段,兩種類型的用戶的所有信息都應該在 AbstractUser 中,但具有 null=True 和 blank=True 值。 這樣你就有了一個用戶,它可以用 is_employee 字段分隔我希望它有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.