【问题标题】:Django rest framework depth serializer only in to_representationDjango rest 框架深度序列化器仅在 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"
        }
}

【问题讨论】:

  • 你能分享更多细节吗?比如包含一些代码,以便更好地理解。

标签: django-rest-framework django-serializer


【解决方案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 我无法发布设置州的城市
猜你喜欢
  • 2015-06-29
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 2015-10-29
  • 2020-05-08
  • 1970-01-01
  • 2018-12-13
相关资源
最近更新 更多