0

我正在使用 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 C_Serializer(serializers.ModelSerializer):
    class Meta:
        model = C
        fields = ('D_id',)
class B_Serializer(serializers.ModelSerializer):
    B_fk = C_Serializer(many=True)
    class Meta:
        model = B
        fields = ('name_b','B_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]}]

可能吗?你可以帮帮我吗?

先感谢您!

4

1 回答 1

0

你不想要嵌套的序列化器。默认关系使用PrimaryKeyRelatedField

class B_Serializer(serializers.ModelSerializer):
    B_id = PrimaryKeyRelatedField(many=True, source=B_id)
    class Meta:
        model = B
        fields = ('name_b','B_id',)

请注意,您的模型的 related_name 似乎是错误的,因为您需要 .B_id 才能访问 C 实例。

于 2015-11-07T06:47:53.133 回答