Я тратил часы на обработку набора запросов типа поля ManyToMany.
Я хочу GET
объектов (model B
), которые имеют отношение ManyToMany с другим объектом (model A
), используя filter
на model A
.
views.py
Я получаю my_user_id
от urls.py
, то есть str
.
id
часть отлично работает, но ...
class UserUserId(generics.RetrieveUpdateAPIView):
#permission_classes = (IsOwner,)
queryset = User.objects.all()
serializer_class = UserSerializer #serializer for User model
def get(self, *args, **kwargs):
id = self.kwargs['my_user_id']
return self.queryset.filter(user_id=id).user_schedules.all()
urls.py
path('user/<str:my_user_id>', views.UserUserId.as_view()),
models.py
class User(models.Model):
user_id = models.TextField(blank=True, null=True)
user_schedules = models.ManyToManyField('Schedule',
related_name='%(class)s_id')
class Schedule(models.Model):
sched_id = models.IntegerField(blank=True, null=True)
sched_name = models.TextField(blank=True, null=True)
Это дает мне следующую ошибку:
AttributeError: у объекта 'QuerySet' нет атрибута 'user_schedules'
Я попытался решить эту проблему, поставив [0]
в конце filter()
, но он кажется неправильным и не работает, если мне нужно проверить несколько объектов User.
Так как я могу получить user_schedules
список конкретных User
, чей user_id
равен my_user_id
?
Я застрял на этом в течение нескольких часов, любая помощь будет высоко ценится.