Python Django Rest框架中外键字段的动态选择

Python Django Rest框架中外键字段的动态选择,python,django,rest,django-rest-framework,Python,Django,Rest,Django Rest Framework,我刚刚开始学习Django Rest框架,并尝试使用Django Rest框架制作一个简单的API 这是我的模特 from __future__ import unicode_literals from django.db import models class Student(models.Model): created = models.DateTimeField(auto_now_add=True) name = models.CharField(max_length=1

我刚刚开始学习Django Rest框架,并尝试使用Django Rest框架制作一个简单的API

这是我的模特

from __future__ import unicode_literals
from django.db import models

class Student(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    name = models.CharField(max_length=150, blank=False)
    student_id = models.CharField(max_length=20, primary_key=True)
    father_name = models.CharField(max_length=150)
    mother_name = models.CharField(max_length=150)

    class Meta:
        ordering = ('student_id',)


class Subject(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    subject_id = models.CharField(max_length=20, primary_key=True)
    name = models.CharField(max_length=150)

    class Meta:
        ordering = ('subject_id',)


class Result(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    grade = models.DecimalField(max_digits=5, decimal_places=3, blank=False)
    student_id = models.ForeignKey(Student, on_delete=models.CASCADE)
    subject_id = models.ForeignKey(Subject, on_delete=models.CASCADE)

    class Meta:
        ordering = ('created',)
这是我的serializers.py

from rest_framework import serializers
from models import *


class StudentSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Student
        fields = ('student_id', 'name', 'father_name', 'mother_name')


class SubjectSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Subject
        fields = ('subject_id', 'name')


class ResultSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Result
        fields = ('grade', 'student_id', 'subject_id')
在我的“结果”模型中,我有两个外键;学生id和科目id。如下所示:

我的问题是,如何在下拉菜单中显示“名称”字段而不是显示“学生对象”和“主题对象”

我试过了

STUDENT_CHOICES = [(each.student_id, each.name) for each in Student.objects.all()]
SUBJECT_CHOICES = [(each.subject_id, each.name) for each in Subject.objects.all()]
在模型的“choices=”字段中,但它不起作用


提前谢谢。

我想您正在寻找一份DRF文档

基本上,使用Django模型自己的表示。例如,在您的
学生
模型中,您可以添加
\uuuu str\uuu
方法:

# this is for Python 3, use __unicode__ on Python 2
def __str__(self):          
    return self.name
Django的元选项文档是,请查找