Django 序列化程序在对象中发送数组

Posted

技术标签:

【中文标题】Django 序列化程序在对象中发送数组【英文标题】:Django serializer send array in object 【发布时间】:2019-10-20 00:03:27 【问题描述】:

我有这样的模型:

class Model1(models.Model):
    time = models.DateTimeField(auto_now=True)

class Model2(models.Model):

    model1= models.ForeignKey(Model1, on_delete=models.CASCADE, related_name="my_list")
    f1 = models.FloatField()

我想为这样的发送数据创建端点:

"time":"123", "my_list":["f1":"123", "f1":"123", "f1":"123"]

这是我的序列化器

class TestSerializer(serializers.ModelSerializer):


 class Meta:
        model = Model1
        fields = ('id',
                  'time',
                  'my_list',)

如何发送我想要的 json? (

"time":"123", "my_list":["f1":"123", "f1":"123", "f1":"123"]

)

【问题讨论】:

【参考方案1】:

ListFieldDictField 一起用作child

class TestSerializer(serializers.ModelSerializer):
    my_list = serializers.ListField(child=serializers.DictField())
    class Meta:
        model = Model1
        fields = ('id', 'time', 'my_list',)

【讨论】:

根据列表中对象的复杂程度,您可能需要设置child=serializers.JSONField

以上是关于Django 序列化程序在对象中发送数组的主要内容,如果未能解决你的问题,请参考以下文章

序列化多个模型并在一个 json 响应中发送全部 django rest 框架

使用 Django REST 框架序列化程序将 JSON 请求保存到数据库

从 django rest 框架中的序列化程序发送自定义错误响应?

如何在 Django Rest Framework 的 REST API 中为数组数据编写序列化程序?

Django 序列化到 JSON 错误:“MetaDict”对象没有属性“concrete_model”

QuerySet 类型的对象不是 JSON 可序列化的 Django