我是 Django 的初学者,我知道已经有人问过这个问题,但是我已经尝试了以前答案中的所有可能的解决方案,但仍然无效。我无法弄清楚我做错了什么。
问题是我的视图当前返回 Grade 表的所有字段,但我需要它通过连接两个表来返回所有这些字段以及 Student 表中的“名称”字段。
我读到只要我使用 ForeignKey,Django 就应该自动执行它,但它实际上不起作用。
我究竟做错了什么?如果这是一个菜鸟问题并且解决方案真的很明显,我很抱歉,我仍在努力学习 Django 的工作原理。
应用程序/模型.py
class Student(models.Model):
id = models.IntegerField(primary_key=True, default=0)
name = models.CharField(max_length=50)
class Grade(models.Model):
subject = models.CharField(max_length=50)
grade = models.IntegerField(default=0)
student = models.ForeignKey(Student, on_delete=models.CASCADE)
应用程序/serializers.py
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = ('id', 'name')
class GradeSerializer(serializers.ModelSerializer):
class Meta:
model = Grade
fields = ('subject', 'grade', 'student')
应用程序/视图.py
class StudentView(viewsets.ModelViewSet):
serializer_class = StudentSerializer
queryset = Student.objects.all()
class GradeView(viewsets.ModelViewSet):
serializer_class = GradeSerializer
queryset = Grade.objects.all().select_related("student")
filterset_fields = ('student')
对于学生,您可以使用 `StudentsSerializer,例如:
class GradeSerializer(serializers.ModelSerializer):
student = StudentSerializer()
class Meta:
model = Grade
fields = ('subject', 'grade', 'student')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句