- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的项目中使用 django rest,直到现在我使用的对象列表 ListSerializer ,当我需要列表的最小长度和最大长度时,我用谷歌搜索并找到了 ListField .
在此之前,我的代码运行良好,没有任何错误和不当行为。现在我使用 ListField 作为我的列表字段序列化器,但是我不知道什么时候使用 ListSerializer?有人可以解释 ListSerializer 和 FieldSerializer 之间的区别吗?
我使用 ListSerializer 的示例代码:
tags = serializers.ListSerializer(child=serializers.CharField(allow_blank=False), required=False)
我的 ListField 示例代码:
open_hour = serializers.ListField(child=serializers.DictField(), max_length=7, min_length=7)
最佳答案
免责声明:此答案不完整
Can someone explain the difference between ListSerializer and FieldSerializer?
我假设问题是 serializers.ListSerializer
和 serializers.ListField
之间的区别
假设我们有两个模型
作为
class Musician(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
instrument = models.CharField(max_length=100)
def __str__(self):
return f'{self.first_name} {self.last_name}'
class Album(models.Model):
artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
release_date = models.DateField()
num_stars = models.IntegerField()
def __str__(self):
return f'{self.name} : {self.artist}'
和序列化器
作为
class AlbumSerializer(serializers.ModelSerializer):
artist = serializers.StringRelatedField()
class Meta:
fields = '__all__'
model = Album
class MusicianSerializer(serializers.ModelSerializer):
AlbumSerializer(many=True, source='album_set')
class Meta:
fields = '__all__'
model = Musician
ListSerializer
如官方所述DRF doc
When a serializer is instantiated and
many=True
is passed, a ListSerializer instance will be created. The serializer class then becomes achild
of the parent ListSerializer
例如,我们可以用 ListSerializer
重写 MusicianSerializer
为
class MusicianSerializer(serializers.ModelSerializer):
albums = serializers.ListSerializer(child=AlbumSerializer(), source='album_set')
class Meta:
fields = '__all__'
model = Musician
它会产生与以前相同的结果。但是,如果我们尝试使用 ListField
而不是 ListSerializer
它将引发错误
'RelatedManager' object is not iterable
查看源码时,发现ListSerializer
和ListField
都是继承自同一个类(父类和祖父类相同)
关于django - DRF ListSerializer 和 ListField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489952/
我正在尝试为具有 content_type 对象的投票应用程序实现 Django-Rest 框架。我尝试使用 rest-framework-generic-relations对于 serializer
我刚接触Django和DRF。在学习的时候,我发现了错误。我不确定错误是从哪里产生的。 Traceback: File "/home/marvel/venv/django_1_111/lib/pyth
我在我的项目中使用 django rest,直到现在我使用的对象列表 ListSerializer ,当我需要列表的最小长度和最大长度时,我用谷歌搜索并找到了 ListField . 在此之前,我的代
我在我的项目中使用 django rest,直到现在我使用的对象列表 ListSerializer ,当我需要列表的最小长度和最大长度时,我用谷歌搜索并找到了 ListField . 在此之前,我的代
我目前有这个要序列化的 Django 模型: class Result(models.Model): ... routes = models.ManyToManyField(Route
以上两种方法有什么区别? 我不明白它们是如何工作的,我确实尝试过谷歌搜索、文档、StackOverflow、中等文章,但我不明白它们的工作原理。 ListCreateAPIView是否会按照列表的长度
我正在编写一个序列化器来为 django 模型提供多个部分更新。我正在遵循 DRF api 指南中出现的示例实现,复制如下并链接到此处:https://www.django-rest-framewor
我的 serializers.py 有以下代码: from rest_framework import serializers from django.db import transaction fr
我有一个稍微复杂的 APIView,这使得我不能使用通用的 ListAPIView返回一个查询集。但我似乎无法使用 ModelSerializer 简单地序列化一个简单的 Django 查询集,即使我
我试图在 django GET 请求中调用序列化程序但它显示了一个 类型错误:“ListSerializer”类型的对象不是 JSON 可序列化的 如果我在某处出错,请帮助我。提前致谢。 class
我正在尝试使用 Django Rest Framework 为某个表批量创建行。我在 documentation 中看到DRF 支持它。 View .py class UserProfileFeedV
我在尝试访问 serializer.data 时遇到错误在 Response(serializer.data, status=something) 返回之前: Getting KeyError whe
我正在阅读有关自定义多个更新的内容 here 而且我还没有弄清楚在什么情况下调用自定义 ListSerializer 更新方法。我想一次更新多个对象,我现在不担心多次创建或删除。 来自文档中的示例:
使用 Vaadin 6.x 和 Vaadin 图表,我正在使用 BasicColumn ( http://demo.vaadin.com/charts/#BasicColumn )。我希望用户在屏幕上
我正在学习 Django Rest Framework 的新手,并且在序列化程序验证和 ListSerializer 更新方法方面遇到问题。 我有一个处理放置请求的 APIView 类。我只是想进行自
我是一名优秀的程序员,十分优秀!