我在序列化程序上使用depth = 1
来显示外键字段的详细信息。然而,它也显示了我并不真正需要的另一个外键领域的细节。如何显示一个字段的详细信息而不显示另一个字段的详细信息?
答案 0 :(得分:5)
仅供参考
假设您有三个模型:
Answer
您需要序列化Question
,并显示User
的详细信息,但不显示class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
exclude = []
class AnswerSerializer(serializers.ModelSerializer):
question = QuestionSerializer(many=False, read_only=True)
class Meta:
model = Answer
exclude = []
的详细信息,然后您可以像这样定义序列化工具:
Answer
当您使用AnswerSerializer
序列化question
时,您会注意到user
字段同时是序列化的,但model
字段仍然是没有序列化的整数。< / p>
如果需要序列化外键,可以显式定义序列化程序中的字段,字段名称等于Answer
中的字段名称,该值等于外键模型序列化程序。当模型序列化时,question
在这种情况下,外壳键字段QuestionSerializer
对于这种情况,将使用user
“扩展”,其他外键字段仍保留原点如果您没有在序列化程序中明确定义序列化程序字段,则在这种情况下为外键值{{1}}。
希望它会有所帮助。