【问题标题】:Django rest api: how to return a JsonArray of jsonObjects as a model field?Django rest api:如何将jsonObjects的JsonArray作为模型字段返回?
【发布时间】:2017-07-06 17:09:28
【问题描述】:

我有两个如图所示的 django 模型

模型 1

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

模型2

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)

一个大项目中可以有多个小项目。 Bigserializer 如下所示

class BigSerializer(serializers.ModelSerializer):

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

现在在访问大项目时,我正在获取名称和小字段。但是 small 字段只返回 Small 模型的 id。我需要小字段内的小项目名称和地址等全部详细信息。我怎样才能实现它?

【问题讨论】:

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


    【解决方案1】:

    你需要定义 Small 序列化器类:

    class SmallSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = Small
            fields = ('name','address')
    

    并在BigSerializer 类中使用此序列化程序:

    class BigSerializer(serializers.ModelSerializer):
        small = SmallSerializer(many=True, read_only=True)
    
        class Meta:
            model = Hotel
            fields = ('name','small')
    

    查看详情here

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

    【讨论】:

      猜你喜欢
      • 2014-05-06
      • 2011-01-13
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多