【发布时间】:2019-09-20 07:31:21
【问题描述】:
我一直在多对多字段类型的查询集处理上花费数小时。
我想通过在model A 上使用filter 与另一个对象(model A)具有多对多关系的GET 对象(model B)。
views.py
我从urls.py 得到my_user_id,即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_schedules 的特定User 列表,其中user_id 是my_user_id?
我被困了几个小时,任何帮助将不胜感激。
【问题讨论】:
-
但是这里要返回相关的
user_schedules?而serializer是UserSerializer?那么序列化程序不应该是ScheduleSerializer吗? -
哦,我认为你是对的。但这并不能解决问题。出现同样的错误???关于查询类型..
标签: django django-rest-framework django-views django-queryset django-urls