Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 序列化程序仅序列化foreing键关系中的某些字段_Django_Serialization_Django Rest Framework - Fatal编程技术网

Django 序列化程序仅序列化foreing键关系中的某些字段

Django 序列化程序仅序列化foreing键关系中的某些字段,django,serialization,django-rest-framework,Django,Serialization,Django Rest Framework,我正在尝试序列化两个由foreing键链接的嵌套模型: class Category(models.Model): sp = models.ForeignKey('species.Sp', on_delete=models.CASCADE, related_name='species_category') category_name = models.CharField(max_length=50) class Catch(models.Model): weight =

我正在尝试序列化两个由foreing键链接的嵌套模型:

class Category(models.Model):
    sp = models.ForeignKey('species.Sp', on_delete=models.CASCADE, related_name='species_category')
    category_name = models.CharField(max_length=50)

class Catch(models.Model):
    weight = models.IntegerField()
    category = models.ForeignKey('species.Category', on_delete=models.CASCADE,)
我知道可以使用
depth
选项,但它可以序列化相关模型的所有字段,例如:

class CatchesSerializer(serializers.ModelSerializer):
    class Meta:
        model = Catch
        fields = ['id', 'weight', 'category', ]
        depth = 1
[
    {
        "id": 335,
        "weight": 4710,
        "category": {
            "sp": 41,
        }
    },
...
]
返回

[
    {
        "id": 335,
        "weight": 4710,
        "category": {
            "id": 1,
            "category_name": "1",
            "sp": 41
        }
    },
...
]
如何仅序列化相关模型的某些字段?例如:

class CatchesSerializer(serializers.ModelSerializer):
    class Meta:
        model = Catch
        fields = ['id', 'weight', 'category', ]
        depth = 1
[
    {
        "id": 335,
        "weight": 4710,
        "category": {
            "sp": 41,
        }
    },
...
]

序列化程序可以是,您可以尝试:

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = ['sp']

class CatchesSerializer(serializers.ModelSerializer):
    category = CategorySerializer()

    class Meta:
        model = Catch
        fields = ['id', 'weight', 'category']
class CategorySerializer(serializers.ModelSerializer):
类元:
型号=类别
字段=['sp']
类CatchesseSerializer(serializers.ModelSerializer):
类别=类别序列化程序()
类元:
模型=捕获
字段=['id'、'weight'、'category']