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

如何将Model.viewset中的查找字段更改为Django Rest框架中的其他唯一参数?

在Django Rest框架中,ModelViewSet提供了方便的CRUD操作,其中的查找字段可以通过更改lookup_field参数来实现。lookup_field默认为'pk',代表使用模型的主键来查找对象,但我们可以将其设置为模型中的其他唯一字段。

以下是如何将ModelViewSet中的查找字段更改为其他唯一参数的步骤:

  1. 首先,在你的序列化器(Serializer)类中,找到对应的ModelViewSet的queryset属性。
  2. queryset属性后面添加.get()方法,并传入要使用的唯一参数和值。
  3. 在你的ModelViewSet类中,找到lookup_field属性并将其设置为你想要使用的唯一字段名。

以下是一个示例:

代码语言:txt
复制
from rest_framework import viewsets
from .serializers import YourModelSerializer
from .models import YourModel

class YourModelViewSet(viewsets.ModelViewSet):
    serializer_class = YourModelSerializer
    queryset = YourModel.objects.all()
    lookup_field = 'unique_field'  # 将唯一字段名设置为 'unique_field'

    def get_object(self):
        queryset = self.filter_queryset(self.get_queryset())
        filter_kwargs = {self.lookup_field: self.kwargs[self.lookup_field]}
        obj = get_object_or_404(queryset, **filter_kwargs)
        self.check_object_permissions(self.request, obj)
        return obj

在上面的示例中,我们将lookup_field设置为了'unique_field',这意味着我们将使用模型中的unique_field字段来查找对象。你可以将'unique_field'替换为你想要使用的任何唯一字段。

对于上述示例中的YourModelSerializerYourModel,你需要根据你自己的项目进行调整。

希望这个回答对你有帮助!如果你对其他问题有任何疑问,请随时提问。

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

相关·内容

DRF框架学习(二)

其他格式数据转换为程序数据结构类型,这个过程叫做反序列化过程。 例:将前端传递数据保存到模型对象过程,叫做反序列化过程。...3.DRF框架 作用:大大提高RestAPI接口开发效率 简介: Django REST framework 框架是一个用于构建Web API 强大而又灵活工具。...通常简称为DRF框架REST framework。 DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发开源项目。...Django框架学习创建demo工程,在settings.pyINSTALLED_APPS添加’rest_framework’。...3.2见识DRF魅力 我们仍以在学习Django框架时使用图书英雄为案例,使用Django REST framework快速实现图书REST API。 3.2.1.

4.1K30

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

文章目录 一、普通过滤 1.针对当前用户进行筛选 2.针对网址进行筛选 3.针对查询参数进行筛选 二、通用过滤 1.全局设置 2.视图设置 3.简单过滤 4.搜索器过滤 4.1 多字段查找 4.2 多字段查找...4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架通用列表视图默认行为是返回模型管理器整个查询集。...筛选初始查询集最后一个示例是根据 url 查询参数确定初始查询集。...框架还包括对通用筛选后端支持,这些后端允许您轻松构造复杂搜索和筛选器。...username', 'email', 'profile__profession'] 4.3 嵌套查找 对于 JSONField 和 HStoreField 字段,您可以使用相同双下划线表示法根据数据结构嵌套值进行查找

2.5K30
  • 用 GraphQL 查询你 Django 应用

    作为后端开发,学习和使用 GraphQL 动力,更多是想将自己从 CRUD 泥沼拯救出来,将更多精力放在其他更重要技术上。...vs 扩展 REST 协议 (此小节图片拷贝自网络,懒得画) 和 REST 一样,GraphQL 并不是什么开发框架,它只是定义了一种通用型查询 DSL。...但是也许某一天,我们需要一个评论精简列表 API,当前返回内容,除了 content 以外其他字段都变成多余了,那么后端开发需要重新定一个 MinimalCommentSerializer 来满足新需求...在 REST 基础,我们增加了 fields 参数,并在 DRF Serializer 里做了特殊处理(你可以点击查看源码),实现具体效果: # 查询 comment,并限制结果返回字段 /api/...在 REST ,为了这个需求我们可能会额外为 /users 增加一个参数 with_comments # 查询 users,并限制结果返回字段 /api/users?

    2K60

    DRF框架学习(四)

    detail改为True,不需要提取参数时候改为False DefaultRouter与 SimpleRouter区别是, DefaultRouter会多附带一个默认API根视图,返回一个包含所有列表视图超链接响应数据...8.1使用方法: 在类视图中设置filter_backends,使用 rest_framework.filters.OrderingFilter过滤器,REST framework会在请求查询字符串参数检查是否包含了...ordering参数,如果包含了ordering参数,则按照ordering参数指明排序字段对数据集进行排序。...前端可以传递ordering参数可选字段值需要在ordering_fields中指明。...10.2自定义异常处理 10.2.1自定义DRF框架异常处理函数 1.自定义异常处理函数 2.设置EXCEPTION_HANDLER配置项 10.2.2详解 可以在DRF框架异常处理函数基础上,补充一些其他异常处理

    2.8K40

    python教程

    用我们序列化来写常规Django视图 让我们看看,使用我们新序列化类,我们怎么写一些API视图。此刻,我们不会使用REST框架其他特性,仅仅像写常规Django视图一样。...通常,你并不想这么做,并且事实上REST框架视图实用做法不是这样,但是目前来说,这足以到达我们目的。...REST框架为每个状态码`(status code)`提供明确标识符,例如在状态`(status)`模型`HTTP_400_BAD_REQUEST`。...相似地,虽然我们可以在响应对象带数据,但允许REST框架渲染响应成正确内容类型。...这个字段很有趣。source参数控制哪个属性被用于构成一个字段,并且能够指出序列实例任何属性。它也能像上面一样使用点标记(.),这种情况下他会横贯给定属性,就是我们使用Django模板语言一样。

    5.1K10

    Django+Vue开发生鲜电商平台之5.使用DRF实现商品列表页和过滤

    但是从代码可以看到: 通过在新建列表、其元素为单个商品信息组成字典,一个一个地添加,显得很麻烦,可进行改进; 有些字段不能直接用json.dumps()方法序列化,如datetime,会报错,如商品列表视图修改为如下时...REST框架是用于构建Web API功能强大且灵活工具包。...方法内容POST,这意味着您可以访问PUT和PATCH请求内容; 它支持REST框架灵活请求解析,而不仅仅是支持表单数据。...显然,实现了搜索,在给定字段搜索,匹配到关键字则展示到前台。...显然,字符限制只是对指定字段起作用,其他字段并不受影响,可以根据需要选择。

    5.3K20

    Django+Vue开发生鲜电商平台之8.商品详情页功能实现

    二、热卖商品实现 可以看到,在商品详情页右侧有热卖商品,这要用到商品is_hot字段,在过滤器对is_hot字段进行过滤即可,apps/goods/filters.py如下: class GoodsFilter...权限检查始终在视图开始处运行,然后再允许执行其他任何代码,通常会使用request.user和request.auth属性身份验证信息来确定是否应允许传入请求。...可以看到,先在DRF后台增加收藏,然后在Postman模拟访问获取到JWT后再删除,显然,只能删除用户自己收藏,而不能删除其他用户收藏。...3.前端Vue实现收藏功能 GenericAPIView有一个属性为lookup_field,用于执行单个模型实例对象查找模型字段,即查询单一数据库对象时使用条件字段,默认为pk,即主键。...,而不再是根据UserFav主键id进行查找,就到了自己设置查询使用字段目的,可用性更高。

    1.1K20

    django-rest-framework框架学习

    django很著名一个框架django-rest-framework,帮我们减少了很多工作量,尤其在序列化与反序列化成我们需要格式帮了我们省了很多事 在这里就记录一下个人学习过程 django-rest-framework...api类,只需要继承rest_frameworkgenerics某个类,重写我们需要方法实现合适逻辑即可 在urls.py配置所需要url 一组apidemo 创建一个model 在创建好...,都有详细介绍 这里我们只简单显示所有的字段 实现视图api类 官方文档: http://www.django-rest-framework.org/api-guide/generic-views/...应用于执行单个模型实例对象查找模型字段。...请注意,使用超链接API时,您需要确保双方API意见和串行类设置查找字段,如果你需要使用一个自定义值 在get_queryset()实现是按照name查询,因为很多时候客户端并不知道自己id

    1.3K10

    Django DjangoFilterBackend django-filter

    djangorestframework==3.8.2 django-filter==2.0.0 #2 需求 获取某些数据时,需要按某些字段过滤 过滤时,有些字段是 “跨表” 字段,该如何处理 过滤时...,有些字段是 “区间” 字段(比如时间),该如何处理 过滤时,有些字段是 “跨表” 后 “区间” 字段,又该如何处理 #3 起步 #3.1 新建一个Django项目 . ├── app │ ├──...REST框架简单过滤 #4.1 没有使用过滤 class getUserListSerializer(DynamicFieldsMixin,serializers.ModelSerializer):...注意 : 在url参数,原来我们在filters.py定义变量是 “RegDate”,到了url变成了 “RegDate_after” 和 “RegDate_before”,这是框架给我设定好区间变量...如果是区间,可以使用django_filters.RangeFilter,如果不是区间可以使用其他 重写函数时,里面的参数不会自动补全 坑 使用Q时,一定不能使用or / and,只能使用 | & return

    1.6K20

    第 3 篇:实现博客首页文章列表 API

    在转换过程,还会进行数据合法性校验。 先来看一个简单例子(摘自 django-rest-framework 官网示例),理解序列化器工作原理和功能。...原因在于,对于 django 模型(Model),已经有了定义其数据类型模型字段,因此 django 表单可以根据关联模型,自动推测需要使用表单字段,在背后帮我们完成表单字段选择,简化了表单定义...和表单类似,django-rest-framework 序列化器也可以根据关联模型,自动检测被序列化模型各个属性数据类型,推测需要使用序列化字段,无需我们显示定义。...不过在后续教程,我们学习前端框架 Vue,那个时候,RESTful API 就有了它用武之地了。...接下来,让我们使用 django-rest-framework 提供通用类视图,将首页 API 视图函数改为类视图。

    1K20

    简化 Django 开发八个 Python 包 | Linux 中国

    我们为 Django 应用准备了六个包,为 Django REST 框架准备了两个包。几乎所有我们项目里,都用到了这些包,真的,不是说笑。  ...不过在继续阅读之前,请先看看我们关于让 Django 管理后台安全[2]几个提示,以及这篇关于 5 个最受欢迎开源 Django 包[3] 文章。  ...django-extensions 还有其他更多功能,也许对你项目有帮助,所以,去浏览一下它文档[5]吧!  ...处理 Django REST 框架用户认证:django-rest-auth  如果 Django 开发涉及到对外提供 API,你很可能用到了 Django REST Framework[22](DRF...Django REST 框架 API 可视化:django-rest-swagger  Django REST Swagger[23] 提供了一个功能丰富用户界面,用来和 Django REST 框架

    2.9K20
    领券