Скажем, у меня есть пользователь модели, который имеет отношение "многие ко многим" с компанией модели;и модель UserType, которая связана как с пользователем, так и с компанией.Например:
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
Как бы я это сделал?