问题标签 [django-serializer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Django REST 框架序列化程序中动态排除或包含字段
我在 Django REST 框架中有一个序列化程序,定义如下:
现在我有两个使用上述序列化程序的 API 视图:
一种解决方案是编写两个不同的序列化程序。但是必须有一个更简单的解决方案来有条件地从给定的序列化程序中排除一个字段。
python - Serializer 上的 SerializerClass 字段从主键保存
我正在使用 Django-rest-framework 开发 API 并从 Web 应用程序中使用它。它有一个医师模型和一个来自 django.auth 用户模型的 Fk。我想从表单发布到医师模型,但序列化程序返回此消息:
{"user":{"non_field_errors":["无效数据。需要字典,但得到 unicode。"]}}
我正在发送用户对象的主键。在 DRF 上存储外键是正确的(或只是一种方式)。我尝试在序列化程序上覆盖 get_validation_exclusions 并在视图集上覆盖 perform_create 方法。
api 和 web 应用程序是分离的。该 API 是用 django 开发的,而 web 应用程序是用 angularjs 开发的。
我的模型
序列化器:
*编辑这是我的帐户序列化程序,它基于此实现和@Kevin Brown 的建议
视图集
当我尝试序列化这个对象时,它会触发一个错误。
所以我可以从<select>
元素中发布任何用户。但我无法验证解决方案。我错过了什么?
错误堆栈跟踪
编辑** 我已选择覆盖视图集上的创建函数并将对象包含在请求中,因此可以对其进行验证,但是随后,序列化程序会尝试为 Account 模型插入一个新对象。我怎样才能防止这种行为?我试图将 PhysicianSerializer 类上的序列化程序设置为 read_only 但随后,django 尝试使用 null user_id 存储模型。如何在不尝试插入相关对象的情况下保存模型?
python - Django restframework - 如何将两个查询集按优先级组合到序列化?
这是我的原始查询:
Movie.objects.filter(releaseday__gte=past_month.date(),releaseday__lte=today.date(),movie__movietime__gte=today).extra({'vrank': 'CASE WHEN hotrank=0 THEN 4 WHEN hotrank >=4 THEN 4 ELSE hotrank END'}).distinct().order_by('vrank','-releaseday')
但结果有重复。
我看文件,它说问题是使用order_by()
和distinct()
一起
queryset1
所以现在我需要queryset2
按顺序组合。先显示结果queryset1
,
然后queryset2
请帮帮我,谢谢
视图.py:
json - django返回自定义json并添加需要处理的值
我得到一个 json 结果,并且该images
部分与 id 不匹配,例如:
但实际上,id=11 应该匹配图像A_123.jpg
,id=12 应该匹配图像B_123.jpg
因为images
需要在功能上做点什么,所以不能很好的匹配。
我怎样才能让它与正确的顺序相匹配?
这是我的代码:
视图.py
序列化.py
python - django serialize 制作自定义显示格式
这是我的代码:
结果是:
但我想要的是:
我该怎么做,请帮帮我
python - DRF - 具有非模型 write_only 字段的 ModelSerializer
我有以下模型、序列化程序和视图。我的目标是传递一个自定义字符串,例如
在 POST 方法中(RegisterViewSet 下面)然后到 viewset/serializer 使用这个信息来填写referral_campaign、referrer_media 和incominging_user
所以:1.referrer 是 write_only 字段 2.referrer 不是模型中的字段,但该信息将用于填充模型中的字段
如何以 DRF 方式实现这一点?
模型
串行器
看法
django - 如何从 django 中的外键访问外键
所以我有一个用户模型(默认用户模型,由 django 提供)、一个提要模型和一个评论模型。提要和评论都使用外键关系引用用户。我需要找到评论提要的用户来推送通知,但是由于延迟加载,我无法这样做。我试过 prefetch_realtions,但这只会导致用户模型中的所有用户。有没有办法在 django 中访问外键的外键?代码如下 - (models.py)-
我的序列化程序类看起来像这样 -
我一直在尝试使用的 prefetch_related 查询如下 -
我的回溯如下 -
谢谢!
django - ModelSerializer 在 Django REST 框架中非常慢
我正在为我的 API 使用 Django REST 框架,昨天我想看看它是如何处理大数据的。我找到了关于如何分析您的请求的教程(由 Tom Christie 撰写),我发现对于 10.000 个用户,我的请求花费了惊人的 2:20 分钟。
大部分时间都花在序列化对象上(大约 65%)所以我想知道我能做些什么来加快速度?
我的用户模型实际上是在扩展默认的 django 模型,所以使用.values()不起作用,因为我也没有得到嵌套模型(即使它快了很多)。
任何帮助将不胜感激 :)
编辑
在检索我的查询集时,我已经在使用 .select_related() 了,它缩短了我的时间,但只有几秒钟。总查询数为 10,所以我的问题不在于数据库访问。
另外,我正在使用 .defer(),以避免在此请求中不需要的字段。这也提供了一个小的改进,但还不够。
编辑#2
Models
Serializers
Views
django-models - 允许在 Django Admin 中编辑到可编辑 = 假字段
DRF 将使用editable=False
on a 字段将 Serializer 默认为 read-only。这是我利用的一个非常有用/安全的默认设置(即我不会忘记将 Serializer 设置为只读)。话虽如此,一旦我设置editable=False
了,有什么方法可以强制 Django 管理员允许编辑其中一个字段?
大概管理员是超级用户,我确实希望他能够更改字段值,但为了安全起见,我希望默认Serializer
逻辑是只读的。
更新
当我创建对象时,我实际上不需要像“set-it”那样编辑字段。
django - HTTP PUT 在 django rest 框架中无法正常工作
我在 django rest 框架中使用以下代码来实现 put 和 patch 功能。PATCH (partial_update) 工作正常,但是,为 PUT 提供更少的字段不会像 PUT 请求那样替换整个资源。例如,如果数据如下所示:
如果我尝试使用以下数据进行 PUT(在http://localhost:800/api/sprints/6/上):
此调用应将描述设置为无。但是描述保留了它的价值,就好像我在做一个补丁一样。如何在更新功能中强制执行资源替换?
PS:我在初始化序列化程序以进行更新时设置了 partial=False。
视图.py:
序列化程序.py:
模型.py