Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 序列化多个对象-json表示-使用数组而不是列表表示_Arrays_Json_Python 3.x_Django Rest Framework_Django Serializer - Fatal编程技术网

Arrays 序列化多个对象-json表示-使用数组而不是列表表示

Arrays 序列化多个对象-json表示-使用数组而不是列表表示,arrays,json,python-3.x,django-rest-framework,django-serializer,Arrays,Json,Python 3.x,Django Rest Framework,Django Serializer,我正在使用Django Rest框架构建服务器部分。我有以下型号: class B: name_b = models.CharField(max_length=200) class D: name_d = models.CharField(max_length=200) class C: B_fk = models.ForeignKey(B, related_name='B_id') D_fk = models.ForeignKey(D, related_name

我正在使用Django Rest框架构建服务器部分。我有以下型号:

class B:
    name_b = models.CharField(max_length=200)
class D:
    name_d = models.CharField(max_length=200)
class C:
    B_fk = models.ForeignKey(B, related_name='B_id')
    D_fk = models.ForeignKey(D, related_name='D_id')
下面是使用嵌套关系()的序列化程序:

我的看法是:

class MyView(generics.ListCreateAPIView):
    permission_classes = (permissions.IsAuthenticated,)
    queryset = B.objects.all()
    serializer_class = B_Serializer
最后我有JSON,如下所示:

[{"name_b": "NAME B", "B_id": [{"D_id": 130},{"D_id": 135},{"D_id": 145},{"D_id": 154}]}]
但是我想要

[{"name_b": "NAME B", "B_id":[130, 135, 145, 154]}]
可能吗?你能帮我吗


提前谢谢你

那么您就不需要嵌套序列化程序了。默认关系正在使用


请注意,您的模型的相关\u名称似乎有误,因为您需要.B\u id才能访问C实例。

当您需要更简单的
PrimaryKeyRelatedField
时,为什么要使用嵌套表示?@Ivan,谢谢您的回答。但在本例中,我将获得C实体的ID。这意味着数组中的C.id。但是我想要C.D_fk(或C.D_id)。感谢您的回答,但这将导致错误:“在序列化程序“B_serializer”中的字段“ManyRelatedField”上指定
source='B_id'
是多余的,因为它与字段名相同。删除
source
关键字参数。'抱歉,我没有完成我的评论:实际上你的建议将导致
[{“name_b”:“name b”,“b_id:[1,2,3,4]}]
-数组中是C.id,但我需要C.D_id,这是表C中的字段。所以数组应该是
[130,135,145,154]
在B ID的标签下返回D ID可能不是一个好主意-我在这方面是个新手。。。那么,将一个父项(B项)序列化为多个子项(C项,每个子项包含FK到D)的好方法是什么?我要B1[C1,C2,C3,C4,C5]
[{"name_b": "NAME B", "B_id":[130, 135, 145, 154]}]
class B_Serializer(serializers.ModelSerializer):
    B_id = PrimaryKeyRelatedField(many=True, source=B_id)
    class Meta:
        model = B
        fields = ('name_b','B_id',)