#python #django #django-rest-framework
Вопрос:
У меня есть 2 модели, и я хотел бы выполнить поиск с помощью поля «Много ко многим» в соответствии с моей структурой, ниже приведены мои модели :
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'.
Ответ №1:
Вы должны фильтровать по name
тому account_types
, так:
User.objects.get(uuid=uuid, account_types__name='Mentor')
или, если вы хотите, чтобы все User
объекты были наставниками, вы можете работать с:
User.objects.filter(account_types__name='Mentor')