1
我在序列化程序上使用depth = 1
来显示外键字段的详细信息。但是,它也显示了我并不需要的另一个外键领域的细节。我如何显示一个字段的细节,但不显示另一个字段的细节?如何在Django Rest Framework中显示单个字段的深度?
我在序列化程序上使用depth = 1
来显示外键字段的详细信息。但是,它也显示了我并不需要的另一个外键领域的细节。我如何显示一个字段的细节,但不显示另一个字段的细节?如何在Django Rest Framework中显示单个字段的深度?
仅供参考
假设你有三种型号:
class User(model.Model):
username = model.CharField('username', max_length=10)
class Question(model.Model):
title = models.CharField('title', max_length=10)
class Answer(model.Model):
user = model.ForeignKey(User)
question = model.ForeignKey(Question)
body = model.TextField('the answer body')
而你需要连载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
中的字段名称,并且该值等于外键模型序列化程序。在这种情况下,模型是连续的,Answer
,这种情况下的外键字段question
将被“扩展”为QuestionSerializer
,并且在这种情况下其他外键字段仍然保留原始外键值,如果您避风港的话,则为user
没有明确定义串行器中的串行器字段。
希望它会有所帮助。
我认为你不能用'深度'来做这件事,根据我的经验,我总是用另一个串行器自定义外键字段,不使用'深度',那么你可以控制哪个字段将显示细节,哪些字段不会。 – Enix
谢谢@Enix。你能否给我一个参考资料,我可以按照你刚才的解释去做? – MiniGunnR