我有一个发票项目。用户可以创建帐户,创建帐户后,他必须创建公司资料。 公司配置文件表与OnetoOnefield的USER表链接。 作为单个用户,应用程序正常运行。 现在我想为User添加一个函数来创建具有不同权限的不同用户的帐户。
我用Google搜索但没有可用的解决方案。
如何创建与创建帐户的主要用户关联的用户并将其链接到公司资料?
评论后,回答我已将模型更新为:
class Organisation(models.Model):
STATUS_CHOICES=(
('service','service'),
('product','product'),
)
user=models.ForeignKey(settings.AUTH_USER_MODEL)
company_name=models.CharField(max_length=250)
company_address=models.CharField(max_length=250)
Company_telephone=models.CharField(max_length=250,blank=True)
company_email=models.CharField(max_length=250,blank=True)
company_website=models.CharField(max_length=250,blank=True)
VAT=models.CharField(max_length=250,blank=True)
Service_Tax=models.CharField(max_length=250,blank=True)
company_PAN=models.CharField(max_length=250,blank=True)
company_bankdetails=models.CharField(max_length=250,blank=True)
invoice_type=models.CharField(max_length=250,choices=STATUS_CHOICES,default='service')
def __str__(self):
return self.company_name
class Company(models.Model):
user=models.OneToOneField(settings.AUTH_USER_MODEL)
company=models.ForeignKey(Organisation,related_name="company")
def __str__(self):
return self.company
现在的问题是,假设我必须创建一个客户。 目前我正在做的是,
客户模式:
Customer_name=........
user_company=......(request.user.company)
应该做什么,以便主要用户创建的用户与主要用户拥有相同的公司。 使用我所遵循的方法,公司ID会更改为与公司相关的每个用户。
答案 0 :(得分:1)
首先,如果您希望多个用户连接到单个公司,则它无法与OneToOneField一起使用。
我建议从用户到公司制作一个FK(假设单个用户只能访问一家公司),如果你想让第一个用户拥有特殊权限(这样其他人就无法添加用户),你可以使OneToOne字段从公司到用户指向管理用户。
另外,我个人认为假设单个用户可以访问一家公司是一个错误的解决方案。那些经理为多家公司(如客户经理)开具发票的用户呢?在这种情况下,单个m2m关系可以完成这一操作,在中间表中,您可以放置有关用户权限的信息。