Django rest framework 视图集中的SlugField不';JSON Web表单中的t populare下拉列表
我有一个Django REST框架应用程序,带有课程和系模型。我有以下模型、序列化器和视图集来表示课程目录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
##模型##
班级部门(模型.模型):
“学术部”
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
我仔细看了一下,发现了这个问题。然后我回来看到了这个答案。