[英]How do I join two tables in Django ORM?
我是 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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.