从 Django 模型序列化程序中排除具有外键关系的特定模型字段
Exclude Specific model field with foreignkey relation from Django model Serializer
我有三个table。学生、学校、成绩
class Student(models.Model):
name = models.CharField(max_length=225)
address = models.CharField(max_length=255)
school = models.Foreignkey(School)
class School(models.Model):
name = models.CharField(max_length=225)
class Result(models.Model):
student = models.Foreignkey(Student)
marks = models.FloatField()
这些模型的相应序列化器就像
class SchoolSerializer(serializers.ModelSerializer):
class Meta:
model = School
fields = '__all__'
class StudentSerializer(serializers.ModelSerializer):
school = SchoolSerializer(read_only=True)
class Meta:
model = student
fields = '__all__'
class ResultSerializer(serializers.ModelSerializer):
student = StudentSerializer(read_only=True)
class Meta:
model = student
fields = '__all__'
每当 resultserializer 调用时,我希望 studentSerializer 应该隐藏学生地址信息。我已经尝试将排除字段包含为
exclude = ('student__address',)
来自此 documentation 但这不起作用,因为 student__address 不是结果模型的模型字段。如何排除该地址字段或将其隐藏在序列化程序响应中。
您可以定义新的 ResultStudentSerializer
序列化程序,它将仅在 ResultSerializer
:
中使用
class ResultStudentSerializer(serializers.ModelSerializer):
school = SchoolSerializer(read_only=True)
class Meta:
model = student
fields = '__all__'
exclude = ('address',)
class ResultSerializer(serializers.ModelSerializer):
student = ResultStudentSerializer(read_only=True)
class Meta:
model = Result
fields = '__all__'
我有三个table。学生、学校、成绩
class Student(models.Model):
name = models.CharField(max_length=225)
address = models.CharField(max_length=255)
school = models.Foreignkey(School)
class School(models.Model):
name = models.CharField(max_length=225)
class Result(models.Model):
student = models.Foreignkey(Student)
marks = models.FloatField()
这些模型的相应序列化器就像
class SchoolSerializer(serializers.ModelSerializer):
class Meta:
model = School
fields = '__all__'
class StudentSerializer(serializers.ModelSerializer):
school = SchoolSerializer(read_only=True)
class Meta:
model = student
fields = '__all__'
class ResultSerializer(serializers.ModelSerializer):
student = StudentSerializer(read_only=True)
class Meta:
model = student
fields = '__all__'
每当 resultserializer 调用时,我希望 studentSerializer 应该隐藏学生地址信息。我已经尝试将排除字段包含为
exclude = ('student__address',)
来自此 documentation 但这不起作用,因为 student__address 不是结果模型的模型字段。如何排除该地址字段或将其隐藏在序列化程序响应中。
您可以定义新的 ResultStudentSerializer
序列化程序,它将仅在 ResultSerializer
:
class ResultStudentSerializer(serializers.ModelSerializer):
school = SchoolSerializer(read_only=True)
class Meta:
model = student
fields = '__all__'
exclude = ('address',)
class ResultSerializer(serializers.ModelSerializer):
student = ResultStudentSerializer(read_only=True)
class Meta:
model = Result
fields = '__all__'