【发布时间】:2019-11-10 05:20:12
【问题描述】:
假设我有模型 User 与模型 Company 具有多对多关系;和模型 UserType,它连接到 User 和 Company。像这样:
class User(models.Model):
name = models.TextField()
class Company(models.Model):
name = models.TextField()
users = models.ManyToManyField(User, related_name="companies")
class UserType(models.Model):
name = models.TextField()
company = models.ForeignKey(Company, related_name="user_types")
users = models.ManyToManyField(User, related_name="user_types")
我想查找公司中的所有用户,这很简单:User.objects.filter(companies=some_company)。但是,我还想过滤返回的用户对象上的 user_types 字段,以便只返回连接到给定公司的 UserType 对象。用代码来解释,应该返回true:
def check_user_types(users, company):
for user in users:
for user_type in user.user_types:
if user_type.company != company:
return false
return true
我该怎么做?
【问题讨论】:
标签: python django django-models