Django:如何使用settings.AUTH_USER_MODEL执行查询?

问题描述 投票:0回答:2

这是我的模特:

class Company(models.Model):
    user    = models.ForeignKey(settings.AUTH_USER_MODEL,related_name="Company_Owner",on_delete=models.CASCADE,null=True,blank=True)
    name    = models.CharField(max_length=50,blank=False)
    auditor = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='main_auditor',blank=True)

我想执行一个查询,该查询将显示特定审计员与之关联的公司列表...

如何使用django中的settings.AUTH_USER_MODEL进行查询?

任何想法的人?

请帮忙

django django-models
2个回答
3
投票

你可以使用get_user_model()这样做:

from django.contrib.auth import get_user_model

User = get_user_model()

first_user = User.objects.first()

first_user.Company_Owner.all()  # will get all companies associated with the User

1
投票

您的模型关系命名错误,更改related_name参数,因为它们需要表示您正在获取Company对象:

class Company(models.Model):
    user    = models.ForeignKey(settings.AUTH_USER_MODEL,related_name="owned_companies",on_delete=models.CASCADE,null=True,blank=True)
    name    = models.CharField(max_length=50,blank=False)
    auditor = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='audited_companies',blank=True)

一旦你有了user(例如user = self.request.user),你就可以做到:

user.owned_companies.all()  # companies for which the user is the owner
user.audited_companies.all()  # companies for which the user is a main auditor
user.owned_companies.filter(auditor=user)  # companies of which the user is both owner and auditor
© www.soinside.com 2019 - 2024. All rights reserved.