Django rest 框架深度序列化器仅在 to_representation 中
Posted
技术标签:
【中文标题】Django rest 框架深度序列化器仅在 to_representation 中【英文标题】:Django rest framework depth serializer only in to_representation 【发布时间】:2022-01-23 20:40:49 【问题描述】:我有一个带有许多外键的模型。我想做一个只有 id 的 POST 并收到深度为 1 的响应。当我设置 depth=1 时它不起作用。
class State(models.Model):
name = models.CharField(max_length=255)
class City(models.Model):
state = models.ForeingKey(State, on_delete=models.PROTECT)
name = models.CharField(max_length=255)
class CitySerializer(serializers.ModelSerializer):
class Meta:
model = City
fields = '__all__'
我想发一些这样的
"state":1,
"name":"City Name"
得到
"id":1,
"name":"City Name",
"state":
"id":1,
"name": "State Name"
【问题讨论】:
你能分享更多细节吗?比如包含一些代码,以便更好地理解。 【参考方案1】:您是否尝试过创建StateSerializer
并在CitySerializer
中使用它?
class StateSerializer(serializers.ModelSerializer):
class Meta:
model = State
fields = '__all__'
class CitySerializer(serializers.ModelSerializer):
state = StateSerializer(read_only=True)
class Meta:
model = City
fields = '__all__'
查看文档here。
【讨论】:
使用 read_only 我无法发布设置州的城市以上是关于Django rest 框架深度序列化器仅在 to_representation 中的主要内容,如果未能解决你的问题,请参考以下文章
Django Rest Framework:如何将数据传递给嵌套的序列化器并仅在自定义验证后创建对象
Django REST框架:POST请求:仅在数据不存在时如何保存数据
Django后端开发学习笔记Django REST Framework的序列化器