django-rest-framework - django rest框架嵌套关系

标签 django-rest-framework

在我的模型中

模型.py

class Province(models.Model):
    name = models.CharField(max_length=128, verbose_name=u"province")

class City(models.Model):
    province = models.ForeignKey("system.Province", related_name='cities', verbose_name=u"province")
    name = models.CharField(max_length=128, verbose_name=u"name")

class District(models.Model):
    city = models.ForeignKey("system.City", related_name='districts', verbose_name=u"city")
    name = models.CharField(max_length=128, verbose_name=u"name")

序列化器.py

class DistrictSerializer(serializers.ModelSerializer):
    class Meta:
        model = District
        fields = ('id', 'name')


class CitySerializer(serializers.ModelSerializer):
    districts = DistrictSerializer(many=True, read_only=True)

    class Meta:
        model = City
        fields = ('id', 'name', 'districts')


class ProvinceSerializer(serializers.ModelSerializer):
    cities = CitySerializer(many=True, read_only=True)

    class Meta:
        model = Province
        fields = ('id', 'name', 'cities')

当我向 url /system/province/1/ 发出 GET 请求时,我得到的是 json 字符串

{
"id": 1,
"name": "广东省",
"cities": [
    {
        "id": 1,
        "name": "广州市",
        "districts": [
            {
                "id": 1,
                "name": "天河区"
            },
            {
                "id": 2,
                "name": "海珠区"
            }
        ]
    },
    {
        "id": 2,
        "name": "汕头市",
        "districts": [
            {
                "id": 3,
                "name": "朝阳区"
            }
        ]
    },
    {
        "id": 3,
        "name": "湛江市",
        "districts": []
    },
    {
        "id": 4,
        "name": "韶关市",
        "districts": []
    }
]

分区json不是我想要的。 我怎样才能防止自动加载区

最佳答案

(推荐)从下面的元类中删除字段“district”。

class Meta:
    model = City
    fields = ('id', 'name')

或者,如果您必须更新与此字段相关的任何值,则使用 extra_kwargs 变量将此字段设置为 write_only。

class Meta:
    model = City
    extra_kwargs = {'districts': {'write_only': True}}
    fields = ('id', 'name', 'districts')

关于django-rest-framework - django rest框架嵌套关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718661/

相关文章:

django - 压缩 django 迁移的最佳方法

django - 如何测试邮件确认?

Django REST Framework 将 'null' 替换为 IntegerField 中的 0

python-3.x - 如何更改 Django REST 框架中 URL 中的默认搜索查询参数?

python - 使用 django-rest-framework-simplejwt 注册后返回 token

python - Django Rest Framework 中没有 View 或模型的简单 Web API

python - Serializer.is_valid() 始终返回 False。 Serializer.errors 为空

python - 你能优化这段代码吗? ( Django , python )

python - Django 中的日期范围过滤器

python - 如何在django orm中计算总和和累计总和