首页
学习
活动
专区
工具
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

相关搜索:Django:在父模型的细节视图模板中显示外键模型无法使用指向用户模型的外键插入到django模型中如何将当前活动用户作为外键添加到django 3的任务模型中?(Django)如何将当前用户的用户名分配给视图中的其他模型?Django的模型是多对一,不能访问外键字段中的所有对象django 3-如何将文章模型外键设置为已登录的用户id?如何将非托管模型中的外键数据迁移到Django 1.7中的托管模型中?如何在Django REST Framework中对我的用户注册视图集的密码进行编码?如何将当前活动用户作为外键添加到djangorestframework中的创建post模型中?如何使用PostgreSQL DB在Django Rest框架中关联两个无外键的Django模型django auth_user中的用户名作为另一个表中的外键如何将我的模型链接到它的外键和django中的模板中的许多字段?自动将'Created_By‘下的登录用户添加到Django Rest框架的模型中如何让当前的框架链接到Django Rest- userId & Vue.js中我的产品模型的外键如何仅当用户和文章在django Rest-Framework中具有相同的令牌时才显示模型?如何在django的detail视图中使用外键将模型中的项目连接到另一个模型?如何在一个模板中呈现两个模型的内容,其中一个模型通过django中的外键通过另一个模型链接?django -用户配置文件在另一个模型中用作外键。如何在表单中显示已登录的用户?Django未将自定义用户保存为另一个模型中的外键: not NULL约束失败在django rest框架中,通过一个序列化程序保存两个相关的模型,并将第一个id作为外键传递给第二个?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

测试开发进阶(二十九)

再次优化 查看 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

66810

【愚公系列】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相关问题挑战。

    13510

    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

    51682

    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

    59850

    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 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 =

    2K40

    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.3K10

    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') # 比对随机字符串

    60310

    Django REST Framework-常用权限类型

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

    1.5K20

    如何在Django中集成JWT

    JWT简介 JWT(JSON Web Token)一种流行跨域认证解决方案。它可以在令牌安全地传输用户身份信息,实现无状态认证机制。...优点: 跨域认证,适用于分布式微服务 减少数据库查询,优化性能 更好托管和扩展性 结构: header.payload.signature header 描述签名算法等元数据 payload 包含自定义用户数据...通过这种方式,JWT可以将用户信息安全地在客户端和服务端传递。 在Django中使用JWT JWT在Django有多种第三方包可以实现,我这里选择使用比较常用simplejwt. 1....这些视图已经被 djangorestframework_simplejwt 提供了,我们只需将其添加到urls.py文件即可: from django.urls import path from rest_framework_simplejwt.views...至此,我们了解了如何在Django REST框架中集成JWT认证,实现基于tokenAPI接口访问控制。JWT可以提供更强大用户认证方案。

    9310
    领券