Лучший способ поиска с помощью поля ManyToMany Django
У меня есть 2 модели, и я хотел выполнить поиск с помощью поля Many to Many в соответствии с моей структуризацией, ниже представлены мои модели :
class User(django_models.AbstractBaseUser, TimeStampedModel,
django_models.PermissionsMixin):
"""
User model for the user creation
"""
uuid = models.UUIDField(unique=True, max_length=500,
default=uuid.uuid4,
editable=False,
db_index=True, blank=False, null=False)
account_types = models.ManyToManyField(AccountTypes,
related_name='account_types')
Затем другая модель AccountTypes
:
class AccountTypes(TimeStampedModel, models.Model):
"""
Account types for the users. e.g Mentors, Mentees, Parents etc.
"""
uuid = models.UUIDField(unique=True, max_length=500,
default=uuid.uuid4,
editable=False,
db_index=True, blank=False, null=False)
name = models.CharField(_('Account Name'), max_length=30, blank=False,
null=False)
Как найти uuid пользователя с определенным AccountType
?
Моя попытка была такой:
User.objects.get(uuid=uuid, account_types__in=['Mentor'])
Но я получил эту ошибку :
ValueError: Field 'id' expected a number but got 'Mentor'.
Вы должны фильтровать по name
из account_types
, так:
User.objects.get(uuid=uuid, account_types__name='Mentor')
или если вам нужны все User
объекты, которые являются ментором, вы можете работать с:
User.objects.filter(account_types__name='Mentor')