如何打印多对多字段
How to print many-to-many field
models.py:
from django.db import models
class Course(models.Model):
course = models.TextField(blank=True)
class Student(models.Model):
first_name = models.TextField()
last_name = models.TextField()
course = models.ManyToManyField(Course)
forms.py:
from django import forms
from .models import Student, Course
class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = ['first_name', 'last_name', 'course']
class CourseForm(forms.ModelForm):
class Meta:
model = Course
fields = ['course']
views.py:
def students_view(request):
if request.method == 'POST':
students_form = StudentForm(request.POST)
if students_form.is_valid():
students_form.save()
print(Student.objects.all().values())
students_form = StudentForm()
context = {
'form':students_form
}
return render(request, 'courses/courses.html', context)
如果我打印 print(Student.objects.all().values())
,那么我会看到学生 ID、first_name 和 last_name。但我看不出他们属于哪个群体。如何打印?
例如这样:
students = Student.objects.prefetch_related("course")
print([(s, list(s.course.all()),) for s in students])
models.py:
from django.db import models
class Course(models.Model):
course = models.TextField(blank=True)
class Student(models.Model):
first_name = models.TextField()
last_name = models.TextField()
course = models.ManyToManyField(Course)
forms.py:
from django import forms
from .models import Student, Course
class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = ['first_name', 'last_name', 'course']
class CourseForm(forms.ModelForm):
class Meta:
model = Course
fields = ['course']
views.py:
def students_view(request):
if request.method == 'POST':
students_form = StudentForm(request.POST)
if students_form.is_valid():
students_form.save()
print(Student.objects.all().values())
students_form = StudentForm()
context = {
'form':students_form
}
return render(request, 'courses/courses.html', context)
如果我打印 print(Student.objects.all().values())
,那么我会看到学生 ID、first_name 和 last_name。但我看不出他们属于哪个群体。如何打印?
例如这样:
students = Student.objects.prefetch_related("course")
print([(s, list(s.course.all()),) for s in students])