Django rest api:如何将jsonArray作为模型字段返回jsonArray?

时间:2017-07-06 17:09:29

标签: django django-models django-rest-framework django-serializer

我有两个django模型如图所示

模型1

class Big(models.Model):
    name = models.CharField(max_length=50, null=True, blank=True)

MODEL2

class Small(models.Model):
    name = models.CharField(max_length=50, null=True, blank=True)
    address = models.CharField(max_length=200, null=True, blank=True)
    big = models.ForeignKey(Big, related_name='small',null=True,on_delete=models.CASCADE)

Big项目中可以有多个小项目。 Bigserializer看起来如下

class BigSerializer(serializers.ModelSerializer):

class Meta:
    model = Hotel
    fields = ('name','small')

现在,在访问Big项目时,我得到了名字和小字段。但是小字段只返回Small模型的id。我需要整个细节,如小字段内的小项目的名称和地址。我怎么能实现它?

1 个答案:

答案 0 :(得分:1)

您需要定义Small serializer类:

class SmallSerializer(serializers.ModelSerializer):

    class Meta:
        model = Small
        fields = ('name','address')

并在BigSerializer class:

中使用此序列化程序
class BigSerializer(serializers.ModelSerializer):
    small = SmallSerializer(many=True, read_only=True)

    class Meta:
        model = Hotel
        fields = ('name','small')

详见here

请注意,如果您需要可写嵌套序列化,则应在create中实现自定义updateBigSerializer方法,请参阅writable nested serialization部分。