这是我的模特:
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进行查询?
任何想法的人?
请帮忙
你可以使用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
您的模型关系命名错误,更改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