Django REST中的PrimaryKeyRelatedField或嵌套关系
我的问题是我想得到这个: 输出Django REST中的PrimaryKeyRelatedField或嵌套关系,django,django-rest-framework,Django,Django Rest Framework,我的问题是我想得到这个: 输出 "counter": 1, "reference": { "ref": "a", "name": "apple", "description": "a fruit" }, "stock": 10, 带有PrimaryKeyRelatedField的se
"counter": 1,
"reference": {
"ref": "a",
"name": "apple",
"description": "a fruit"
},
"stock": 10,
带有PrimaryKeyRelatedField的serializers.py
class StockSerializer(serializers.ModelSerializer):
counter = serializers.PrimaryKeyRelatedField(queryset=Counter.objects.all())
reference = serializers.PrimaryKeyRelatedField(queryset=Reference.objects.all())
class Meta:
model = Stock
fields = ['counter', 'reference', 'stock']
serializers.py与嵌套关系
class ReferenceSerializer(serializers.ModelSerializer):
class Meta:
model = Reference
fields = ['ref', 'name', 'description']
class StockSerializer(serializers.ModelSerializer):
counter = serializers.PrimaryKeyRelatedField(queryset=Counter.objects.all())
reference = ReferenceSerializer()
class Meta:
model = Stock
depth = 2
fields = ['counter', 'reference', 'stock']
如果我使用PrimaryKeyRelatedField,我只有id,但是如果我使用嵌套关系,我必须填充所有字段,但它已经存在,我想从列表中选择。您可以有两个字段,一个是只读的,另一个是只读的,如下所示:
class StockSerializer(serializers.ModelSerializer):
counter = serializers.PrimaryKeyRelatedField(queryset=Counter.objects.all())
reference = ReferenceSerializer(read_only=True)
reference_id = serializers.PrimaryKeyRelatedField(queryset=Reference.objects.all(), write_only=True)
当API发送数据时,它显示
reference
,当它接收输入时,它获得reference\u id
您可以有两个字段-一个是只读的,另一个是只读的,如下所示:
class StockSerializer(serializers.ModelSerializer):
counter = serializers.PrimaryKeyRelatedField(queryset=Counter.objects.all())
reference = ReferenceSerializer(read_only=True)
reference_id = serializers.PrimaryKeyRelatedField(queryset=Reference.objects.all(), write_only=True)
当API发送数据时,它显示reference
,当它接收输入时,它获得reference\u id