一个模型类可以与另一组模型类django有特定的关系吗?

时间:2018-09-28 09:56:15

标签: python django django-models

这是我的模特

class company(models.Model):
    User = models.ForeignKey(User,related_name="Company_Owner",on_delete=models.CASCADE,null=True,blank=True)
    Name = models.CharField(max_length=50,blank=False)

class group(models.Model):
    User = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
    group_Name = models.CharField(max_length=32,unique=True,error_messages={'unique':"This Group Name has already been registered"})
    Company = models.ForeignKey(company,on_delete=models.CASCADE,null=True,blank=True,related_name='Company_group')

class ledger1(models.Model):
    User = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
    Company = models.ForeignKey(company,on_delete=models.CASCADE,null=True,blank=True,related_name='Companys')
    Creation_Date = models.DateField(default=datetime.now)
    name = models.CharField(max_length=32,unique=True)

这些是我为会计应用程序创建的模型... 公司模型通过外键连接到组和分类帐... 我想为用户创建的不同公司提供不同的组和分类帐...

就像在django中为所有用户所做的一样,我们需要为用户执行以下操作:

 filter(User=request.user)

类似地,我可以为我的公司做类似的事情吗? 我的意思是一家公司将拥有不同的组和分类帐集。.

在Django中可以吗? 如果是,谁能帮我解决这个问题...

提前谢谢

1 个答案:

答案 0 :(得分:2)

如果我很了解您的需求,这要归功于您在组和分类账上拥有的公司模型的外键。您只需要在查询中使用您在模型中指定的“ related_name”值即可。 https://docs.djangoproject.com/en/2.1/topics/db/queries/

示例:

# get the companies created by the user
companies = company.objects.filter(User=request.user)

# select the company you need for example the first one
mycompany = companies.first()

# then get groups or ledgers related to it
groups = mycompany.Company_group.all()
ledgers = mycompany.Companys.all()

只是一个建议:声明类和属性时,请尝试使用始终相同的格式(例如始终使用小写),这样会更易于阅读和使用它们。