我在Django中有以下兩種模型。一個基本上是基本的Django用戶類的擴展,另一個是公司模型。我想說的是,用戶可以屬於一個或多個公司,並且公司也可以擁有一個或多個聯繫人=「用戶」。這是否是一個正確的設置?我應該如何表達用戶和公司之間的關係?多對多或一對多Django
用戶配置模式:
class Profile(models.Model):
user = models.OneToOneField(User)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
公司型號:
class Company(models.Model):
name = models.CharField(max_length=120)
account_name = models.CharField(max_length=10, default="")
sales_rep = models.ForeignKey(User, related_name="%(app_label)s_%(class)s_sales", default="")
csr = models.ForeignKey(User, related_name="%(app_label)s_%(class)s_csr", default="")
class CompanyContact(models.Model):
name = models.CharField(max_length=40, default="")
email = models.CharField(max_length=50, default="")
user = models.ForeignKey(User)
company = models.ForeignKey(Company)
真棒!我想給公司聯繫添加姓名和電子郵件,因爲「聯繫人」沒有個人資料。管理員可以爲該公司輸入他們自己的手動聯繫人,同時還可以將實際用戶鏈接爲公司聯繫人 –
另外,配置文件將包含更多信息,然後是first_name和last_name。將來它可能包含:主題,生日,訪問規則。 –
@SamMunroe複製聯繫人中的電子郵件/姓名可能會有點不方便。相反,我建議如下:通過「CompanyContact」保持'User'和'Company'之間的ManyToMany關係,然後在添加聯繫人時始終創建一個'User'。 「個人資料」是分開的,包含附加信息,但不需要成爲聯繫人。 –