Django:为项目创建子用户,以访问与用户相关的公司特定数据

时间:2016-08-18 07:58:08

标签: django django-models django-views

我有一个发票项目。用户可以创建帐户,创建帐户后,他必须创建公司资料。 公司配置文件表与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会更改为与公司相关的每个用户。

1 个答案:

答案 0 :(得分:1)

首先,如果您希望多个用户连接到单个公司,则它无法与OneToOneField一起使用。

我建议从用户到公司制作一个FK(假设单个用户只能访问一家公司),如果你想让第一个用户拥有特殊权限(这样其他人就无法添加用户),你可以使OneToOne字段从公司到用户指向管理用户。

另外,我个人认为假设单个用户可以访问一家公司是一个错误的解决方案。那些经理为多家公司(如客户经理)开具发票的用户呢?在这种情况下,单个m2m关系可以完成这一操作,在中间表中,您可以放置​​有关用户权限的信息。