Django Rest查询集通过url参数过滤

轻度的

我需要根据url参数过滤ListAPIView中的queryset。基本上,应用程序列出了事件的所有参与者(用户),并调用了API/events/:id/attendees/

您可以在下面找到序列化器,模型,URL和视图。我还想知道是否有其他实践可以在Django REST中实现此类端点实现

**serializers.py**
class AttendeeSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model = Attendee
        fields = ('user', 'status')


**views.py**
class EventAttendeeList(generics.ListAPIView):
    queryset = Attendee.objects.all()
    serializer_class = AttendeeSerializer
    #permission_classes = (permissions.IsAuthenticatedOrReadOnly,)

    def get_queryset(self):
        # It should filter attendees by event_id posted in URL
        return Attendee.objects.all()

**urls.py**

url(r'^events/(?P<pk>[0-9]+)/attendees/$', views.EventAttendeeList.as_view()),


**models.py**
class Event(models.Model):
    name = models.CharField(max_length=500, blank=True)
    attendees = models.ManyToManyField(settings.AUTH_USER_MODEL, through='Attendee', related_name='attendees_event')


class Attendee(models.Model):
    event = models.ForeignKey(Event, related_name="a_event")
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="a_user")
    requested_on = models.DateTimeField(default=timezone.now)
佐尔巴

您可以使用self.kwargs['parameter_name']http://www.django-rest-framework.org/api-guide/filtering#filtering-against-the-url访问视图中的url参数所以最简单的解决方案是

def get_queryset(self):
    return Attendee.objects.filter(event=self.kwargs['pk'])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django-是否使用某些参数过滤了查询集

Django REST框架-使用日期和字符串参数过滤查询参数

如何在Django过滤器扩展中通过带有排除参数的查询集

基于URL的Django REST框架过滤器查询集

根据URL参数过滤下拉查询集

带有外键的Django两参数过滤器查询

url查询参数中的Django rest elasticsearch过滤器范围

使用 AJAX 和 Django Rest Framework 动态过滤查询集

如何通过最新的相关模型过滤Django查询集?

Django:如何通过相关对象字段的组合过滤查询集?

Django如何通过相关对象过滤查询集

Django:通过“参数具有字段值的一部分”来过滤查询集?

Django REST框架-根据查询参数进行过滤

过滤 Django ResourceRelatedField 的查询集

Django过滤查询集模型

基于 url 中的 kwarg 的 django 过滤器查询集

Django 使用 URL 过滤 ModelChoiceField 查询集以填充表单

Django如何使用Django模型utils通过子类过滤查询集?

Django过滤多个URL参数

是否可以通过Django的{%url%}模板标记传递查询参数?

组合Django查询集的过滤器

Django - 使用可选的 FormFields 过滤查询集

Django-用户定义的查询集过滤

Django - 如何过滤嵌套查询集的子项?

Django - 附加后过滤查询集

Django 查询集过滤和注释

Django - 多过滤查询集返回空查询集

具有Viewset-Router查询集过滤功能的Django REST Framework

Django Rest Framework:基于另一个模型的高级查询集过滤