Python Django DRF:如何显示过滤后的数据
我正在学习todo教程。我有TodoItem和TodoList,当我转到url`时会得到它们。我只想从api返回已完成的todoItem。我该怎么做 models.py 序列化程序.py views.py 这是项目级别的url.pyPython Django DRF:如何显示过滤后的数据,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在学习todo教程。我有TodoItem和TodoList,当我转到url`时会得到它们。我只想从api返回已完成的todoItem。我该怎么做 models.py 序列化程序.py views.py 这是项目级别的url.py from django.contrib import admin from django.urls import path, include from rest_framework import routers from todo import views ro
from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from todo import views
router = routers.DefaultRouter()
router.register(r'todos', views.TodoView, 'todo')
router.register(r'todoitems', views.TodoListView, 'todoitem')
router.register(r'todolists', views.TodoItemView, 'todolist')
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
path('api/', include(router.urls))
]
另一个问题是我需要一个用户登录/注册机制。我已将所有者属性添加到上面注释的TodoList中。但是,如何列出这样的数据,如显示user1已完成的任务 您的TodoItemView
class TodoItemView(viewsets.ModelViewSet):
serializer_class = TodoItemSerializer
queryset = TodoItem.objects.all()
filter_backends = [DjangoFilterBackend]
filter_class = TodoItemFilter
你的TodoItemFilter
class TodoItemFilter(django_filters.rest_framework.FilterSet):
class Meta:
model = TodoItem
fields = ('is_completed',)
还可以添加类的其他字段
在这种情况下,你可以做@NalinDobhal他当然可以做,但这样过滤到视图中并不是一个好的做法。你可以使用filter类,通过使用query Param按模型字段过滤模型。看一看。还请记住,这是一个单独的Python库,您必须手动安装。我应该在wiews.py文件中这样做吗?将您的自定义过滤器放入filters.py,并将其放入使用TodoItem的应用程序中
from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from todo import views
router = routers.DefaultRouter()
router.register(r'todos', views.TodoView, 'todo')
router.register(r'todoitems', views.TodoListView, 'todoitem')
router.register(r'todolists', views.TodoItemView, 'todolist')
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
path('api/', include(router.urls))
]
class TodoItemView(viewsets.ModelViewSet):
serializer_class = TodoItemSerializer
queryset = TodoItem.objects.all()
filter_backends = [DjangoFilterBackend]
filter_class = TodoItemFilter
class TodoItemFilter(django_filters.rest_framework.FilterSet):
class Meta:
model = TodoItem
fields = ('is_completed',)