我有两个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。我需要整个细节,如小字段内的小项目的名称和地址。我怎么能实现它?
答案 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
中实现自定义update
和BigSerializer
方法,请参阅writable nested serialization部分。