首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将用户名添加到视图Django Rest Framework中的filterset_fields,其中用户是模型的外键?

在Django Rest Framework中,要将用户名添加到视图的filterset_fields中,需要进行以下步骤:

  1. 首先,确保你已经在模型中定义了用户字段,并将其设置为外键。例如,假设你的模型名为MyModel,用户字段名为user,外键指向Django的内置用户模型User,你的模型定义可能如下所示:
代码语言:txt
复制
from django.db import models
from django.contrib.auth.models import User

class MyModel(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    # 其他字段...
  1. 接下来,在你的视图类中,使用Django Rest Framework提供的FilterSet类来创建一个过滤器集。你可以通过继承rest_framework.filters.FilterSet来创建自定义的过滤器集。在过滤器集中,你可以指定要过滤的字段以及过滤器的行为。在这个例子中,我们将使用django_filters库来创建过滤器集。首先,确保你已经安装了django_filters库:
代码语言:txt
复制
pip install django_filters

然后,创建一个名为filters.py的文件,并添加以下内容:

代码语言:txt
复制
import django_filters

from .models import MyModel

class MyModelFilter(django_filters.FilterSet):
    username = django_filters.CharFilter(field_name='user__username')

    class Meta:
        model = MyModel
        fields = ['username']

在上面的代码中,我们定义了一个名为username的过滤器,它将过滤user字段的username属性。field_name参数指定了要过滤的字段路径。

  1. 最后,在你的视图类中,将过滤器集应用到视图中。假设你的视图类名为MyModelViewSet,你可以按照以下方式应用过滤器集:
代码语言:txt
复制
from rest_framework import viewsets
from .models import MyModel
from .filters import MyModelFilter

class MyModelViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer
    filterset_class = MyModelFilter

在上面的代码中,我们将过滤器集MyModelFilter应用到视图类中的filterset_class属性。

现在,你可以使用username作为过滤器字段来过滤视图中的数据。例如,通过访问/mymodels?username=testuser,你可以获取user字段的username属性为testuser的所有对象。

这是一个基本的示例,你可以根据自己的需求进行更多的定制和扩展。关于Django Rest Framework的过滤器集和过滤器的更多信息,请参考官方文档:Filters

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

测试开发进阶(二十九)

再次优化 查看 rest_framework.generics.CreateAPIView rest_framework.generics.ListAPIView 可以看到很多重复代码 ?...,不能合并 有相同get方法 两个类视图所对应url地址不一致 再次优化 优化思路:使用动作来触发,而不是请求方法 from rest_framework import viewsets viewsets...= ['name', 'leader', 'tester'] 视图 Django View DRF APIView GenericAPIView mixins扩展类 CreateAPIView(合并拓展类...) 视图集 action和请求方法映射 ViewSet GenericViewSet CreateViewSet 路由 from rest_framework import routers 创建SimpleRouter...路由对象 注册路由 第一个参数prefix为路由前缀,一般添加为应用名称即可 第二个参数viewset为视图集「不要加as_view」 将自动生成路由添加到列表 from django.urls import

63210

【愚公系列】2022年04月 Python教学课程 74-DRF框架之过滤

4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架通用列表视图默认行为返回模型管理器整个查询集。...通常,您希望 API 限制查询集返回项目。 筛选子类任何视图查询集最简单方法重写该方法。....+)/$', PurchaseList.as_view()), 然后,您可以编写一个视图,返回按 URL 用户名部分筛选查询集: class PurchaseList(generics.ListAPIView...'django_filters', ... ] REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend...该属性应是模型上文本类型字段名称列表,例如 from rest_framework import filters class UserListView(generics.ListAPIView):

2.5K30

Flask框架在Python面试应用与实战

Django REST framework (DRF) 一个强大而灵活工具包,用于构建Web API,特别是基于Django应用程序。...在Python面试,对DRF理解与实际应用能力衡量候选人Web服务开发能力重要指标。本篇博客将深入浅出地探讨DRF面试中常见问题、易错点以及应对策略,并结合实例代码进行讲解。...一、常见面试问题核心组件与工作流程视图(Views):解释视图在DRF作用,介绍基于类视图(ViewSet、GenericViewSet)与视图集(ViewSets)概念,以及如何关联到URL。...return Response(data, status=HTTP_200_OK)三、实战代码示例以下一个使用DRF构建简易博客文章API示例,涵盖了上述部分知识点:from django.contrib.auth.models...REST framework关键知识点、规避常见错误,并通过实战项目积累经验,将有助于你在Python面试展现优秀API开发技能,从容应对DRF相关问题挑战。

9310

Django REST Framework-视图集(四)

视图过滤器在实际开发,我们通常需要对 API 返回结果进行过滤、排序和分页等操作。在 Django REST Framework ,我们可以使用过滤器(Filter)来实现这些功能。...例如,我们可以定义一个名为 BookViewSet 视图集类,并使用 DjangoFilterBackend 过滤器来对查询结果进行过滤:from django_filters.rest_framework...= ['title', 'author', 'publish_date']在这个例子,我们使用 filter_backends 属性将过滤器设置视图过滤器在实际开发,我们通常需要对 API 返回结果进行过滤...在 Django REST Framework ,我们可以使用过滤器(Filter)来实现这些功能。过滤器可以根据客户端提供查询参数来对返回结果进行过滤、排序和分页等操作。...例如,我们可以定义一个名为 BookViewSet 视图集类,并使用 DjangoFilterBackend 过滤器来对查询结果进行过滤:from django_filters.rest_framework

50382

Django REST Framework-过滤器(三)

Django REST Framework,可以使用rest_framework.filters.OrderingFilter类来实现排序过滤器。...以下一个使用排序过滤器示例:from rest_framework import genericsfrom rest_framework.filters import OrderingFilterfrom...这将允许我们根据特定排序条件来获取数据。过滤器组合Django REST Framework允许您将多个过滤器组合在一起使用。您可以在视图中指定多个过滤器后端,以便您可以按多个条件过滤和查询数据。...以下一个使用多个过滤器示例:from django_filters import rest_framework as filtersfrom rest_framework import genericsfrom...rest_framework.filters import SearchFilter, OrderingFilterfrom myapp.models import MyModelfrom myapp.serializers

56150

DRF比Django认证和权限高在哪里

我们请求并没有用户信息,正常来说在访问视图时候就该被拦截了。 给视图添加认证 我们需要让API更符合常规,让未认证用户不能执行视图代码。...DRF提供了rest_framework .permissions来给视图添加认证: ? 其中IsAuthenticatedOrReadOnly表示只有认证了才能读写,否则只能读。...把它添加到SnippetList和SnippetDetail视图中: from rest_framework import permissions permission_classes = [permissions.IsAuthenticatedOrReadOnly...登录视图 如果用浏览器打开http://127.0.0.1:8000/snippets/,会发现只有GET方法没有POST,这是因为需要添加DRF登录视图,在tutorial/urls.py添加rest_framework.urls...其他认证方式 本文使用认证方式默认SessionAuthentication和BasicAuthentication,只要数据库用户名、密码和请求用户凭证(用户名、密码)匹配上了,就认为认证成功

1.5K20

Django开发】前后端分离美多商城项目第2篇:项目配置(附代码,文档已分享)

异常处理 修改Django REST framework默认异常处理方法,补充处理数据库异常和Redis异常。...一个可配置密码哈希系统 用户登录或内容显示表单和视图 一个可插拔后台系统 Django默认提供认证系统用户认证机制依赖Session机制,我们在本项目中将引入JWT认证机制,将用户身份凭据存放在...Token,然后对接Django认证系统,帮助我们来实现: 用户数据模型 用户密码加密与验证 用户权限系统 Django用户模型Django认证系统中提供了用户模型类User保存用户数据...指示用户账号是否激活。 我们建议您将此标志设置为False而不是删除帐户;这样,如果您应用程序对用户有任何,则不会中断。它不是用来控制用户是否能够登录。...= verbose_name 我们自定义用户模型类还不能直接被Django认证系统所识别,需要在配置文件告知Django认证系统使用我们自定义模型类。

19010

Django REST Framework-如何使用过滤器

Django REST Framework (DRF) 一个开源 Web 框架,它建立在 Django 上,可以帮助你轻松地构建 RESTful API。...DRF 提供了很多有用功能,其中之一就是过滤器(filters)。过滤器一种机制,它可以让你在获取资源时对它们进行过滤。在 DRF ,你可以使用内置过滤器或者编写自定义过滤器。...例如,你可以在视图类定义添加如下代码:from rest_framework import filtersclass MyView(viewsets.ModelViewSet): queryset...另外一个例子,如果你想要对日期字段进行范围过滤,你可以在视图类定义添加如下代码:from rest_framework import filtersclass MyView(viewsets.ModelViewSet...例如,下面的代码展示了如何将 PriceFilterBackend 添加到我们视图集合:class BookViewSet(viewsets.ModelViewSet): queryset =

1.9K40

TO-do api

我们需要只是一个模型,而Django REST Framework将负责其余工作。...请记住,idDjango自动创建,因此我们不必在Todo模型定义它,但是我们将在细节视图中使用它。 就是这样。...Views 在传统Django视图用于自定义要发送到模板数据。 在Django REST Framework视图执行相同操作,但对序列化数据而言。...Django REST Framework视图语法故意与常规Django视图非常相似,就像常规Django一样,Django REST Framework随附了通用视图以用于常见用例。...我们可以做更多配置,以后再做,但最终,创建Django API过程建立模型,编写一些URL路由,然后添加Django REST Framework序列化程序和视图所提供一些魔术。

3.6K31

5 分钟,带你快速入门 Django DRF

DRF 框架,全称为 Django Rest Framework Django 内置模块扩展,用于创建标准化 RESTful API;它利用 ORM 映射数据库,并自定义序列化数据进行返回,多用于前后端分离项目...python3 manage.py migrate # 创建一个超级用户,记住用户名和密码 python3 manage.py createsuperuser 2-5 添加应用并配置 DRF 权限...在项目配置文件 settings.py ,添加应用「 rest_framework 」 # settings.py # 添加应用:rest_framework INSTALLED_APPS = [...', ] } 2-6 自定义序列化类并关联模型 在项目目录下 urls.py 文件,自定义一个类继承于「 serializers.HyperlinkedModelSerializer 」...函数将上面自定义视图 UserViewSet 注册到路由中去 # urls.py from rest_framework import serializers, viewsets, routers

1.7K20

django-rest-framework框架学习

django很著名一个框架django-rest-framework,帮我们减少了很多工作量,尤其在序列化与反序列化成我们需要格式帮了我们省了很多事 在这里就记录一下个人学习过程 django-rest-framework...实现一组api基本流程 在models.py创建自己需要数据模型 创建serializers.py在其中写出适合serializer类,能够正确序列化与反序列化 在views.py写出合适...://www.django-rest-framework.org/api-guide/serializers/ 创建serializers.py在其中实现序列化类 由于这个序列化和我们模型想对应相关...,都有详细介绍 这里我们只简单显示所有的字段 实现视图api类 官方文档: http://www.django-rest-framework.org/api-guide/generic-views/...,毕竟现在很多大牛说不使用,在应用控制逻辑嘛 当然这里也可以使用models.ForeignKey,会让操作变得更简单一点 serializers.py为: from rest_framework

1.2K10

DRF-认证权限频率

,返回给前端json格式字符串,字符串带一个随机字符串 登录接口 模型 from django.db import models class User(models.Model): username...,token放在哪自己规定,比如从查询参数获取 token = request.query_params.get('token') # 比对随机字符串...(user_token.user),给了request.user,就是当前登录用户对象 返回第二个(token),给了request.auth,就是token串 局部禁用和全局配置使用时候要注意,全局如果认证时候每个视图函数都认证...,获取和修改等操作都在一个视图里了,分开写会好一点 频率 作用 限制视图接口被访问频率次数 限制条件 : IP、ID、唯一 频率周期 : 时(h)、分(m)、秒(s) 频率次数 : [num] /...,token放在哪自己规定,比如从查询参数获取 token = request.query_params.get('token') # 比对随机字符串

57710

Django REST Framework-常用权限类型

Django REST Framework一个用于构建Web API强大框架。其中一个重要特性提供了多种权限类型来控制用户对API端点访问。...DjangoModelPermissions:基于Django模型权限控制。允许用户在执行特定操作之前检查模型权限。...如何使用权限Django REST Framework权限通常通过将它们附加到视图来使用。您可以通过将类变量permission_classes设置为适当权限类列表来指定要使用权限。...示例以下一个更完整示例,展示如何在Django REST Framework中使用权限。假设我们有一个名为Snippet模型,它表示代码片段,我们希望只有创建该代码片段用户才能够修改或删除它。...我们将IsOwnerOrReadOnly权限类添加到视图permission_classes属性,以确保只有代码片段所有者才能够修改或删除它。

1.4K20
领券