Django rest framework 视图集中的SlugField不';JSON Web表单中的t populare下拉列表

Django rest framework 视图集中的SlugField不';JSON Web表单中的t populare下拉列表,django-rest-framework,Django Rest Framework,我有一个Django REST框架应用程序,带有课程和系模型。我有以下模型、序列化器和视图集来表示课程目录 ##模型## 班级部门(模型.模型): “学术部” name=models.CharField(最大长度=30,唯一性=True) 课堂课程(models.Model): “”“课程目录中的课程”“” 课程名称=models.CharField(最大长度=30,唯一性=True) department=models.ForeignKey(department,on_delete=mode

我有一个Django REST框架应用程序,带有课程和系模型。我有以下模型、序列化器和视图集来表示课程目录


##模型##
班级部门(模型.模型):
“学术部”
name=models.CharField(最大长度=30,唯一性=True)
课堂课程(models.Model):
“”“课程目录中的课程”“”
课程名称=models.CharField(最大长度=30,唯一性=True)
department=models.ForeignKey(department,on_delete=models.PROTECT)
课程编号=型号。小数字段(小数位数=0,最大位数=3,唯一位数=True)
credits=models.IntegerField()
类元:
共同唯一=(“部门”、“课程号”),)
##序列化程序##
类DepartmentSerializer(serializers.HyperlinkedModelSerializer):
类元:
模型=模型.部门
#字段=('id'、'last\u name'、'first\u name')
类CourseSerializer(serializers.ModelSerializer):
department=serializers.SlugRelatedField(
多=假,
只读=错误,
slug_字段='name',
queryset=models.Department.objects.all()
)
类元:
模型=模型。课程
字段=(
“id”,
“课程名称”,
"部门",,
“课程号”,
‘学分’)
##视图集##
类CourseViewSet(ViewSet.ModelViewSet):
"""
允许查看或编辑课程的API端点。
"""
queryset=models.Course.objects.all().order\u by('department\u name','Course\u number'))
serializer\u class=serializers.CourseSerializer
课程有一个外键指向部门,使用
slugrelated字段
a课程部门在结果JSON中作为部门名称列出:

{
    "count": 5,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 5,
            "course_name": "History of Justin",
            "department": "English",
            "course_number": "344",
            "credits": 3
        },
        {
            "id": 6,
            "course_name": "34",
            "department": "Math",
            "course_number": "4",
            "credits": 4
        },
        {
            "id": 1,
            "course_name": "Pre Calc",
            "department": "Math",
            "course_number": "101",
            "credits": 3
        },
        {
            "id": 2,
            "course_name": "Calc I",
            "department": "Math",
            "course_number": "200",
            "credits": 3
        },
        {
            "id": 3,
            "course_name": "Calc II",
            "department": "Math",
            "course_number": "201",
            "credits": 3
        }
    ]
}
我还可以在POST请求中使用以下主体填充新课程:

{
    "course_name": "Chemistry I",
    "department": "Science",
    "course_number": "200",
    "credits": 3
}
但是,自动生成的表单不会呈现slug字段文本


如何更改此表单呈现的内容?

您需要在
部门
中添加
\uuu str\uuuu
方法,以便告诉Django如何表示
部门
实例:

class Department(models.Model):
    """Academic Department""" 
    name = models.CharField(max_length=30, unique=True)

    def __str__(self):
        return self.name
我仔细看了一下,发现了这个问题。然后我回来看到了这个答案。