如何在Django Rest Framework中显示单个字段的深度?

Min*_*nnR 2 django rest frameworks

我正在使用depth = 1我的序列化程序来显示外键字段的详细信息.但是,它也显示了我并不真正需要的另一个外键领域的细节.如何显示一个字段的详细信息而不显示另一个字段的详细信息?

Eni*_*nix 6

仅供参考

假设您有三个模型:

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')
Run Code Online (Sandbox Code Playgroud)

你需要序列化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 = []
Run Code Online (Sandbox Code Playgroud)

当你序列化AnswerAnswerSerializer,你会注意到该question字段是同时序列化的,但是user字段仍然是一个没有序列化的整数.

如果需要序列化外键,则可以显式定义序列化程序中的字段,并且字段名称等于字段名称model,并且该值等于外键模型序列化程序.当模型是序列化时,Answer在这种情况下,对于这种情况,外键字段question将被"扩展" QuestionSerializer,并且其他外键字段仍然保留原始外键值,user在这种情况下,如果您没有明确定义序列化程序中的序列化程序字段.

希望它会有所帮助.