Django: упорядочивание элементов поля формы
У меня есть две модели с именами Quiz и Course
class Quiz(models.Model):
course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='quizzes',)
и
class Course(models.Model):
name = models.CharField(max_length=30)
Я использую модель викторины в createview.
class newQuiz(CreateView):
model = Quiz
template_name = 'teacher/new_quiz.html'
fields = ['name', 'course', ]
поле курс отображается как поле выбора в форме как я могу упорядочить варианты курса в порядке возрастания при отображении в форме
? Самый простой способ - предоставить одеринг по умолчанию для Course
модели с помощью ordering
мета-опции [Django-doc]:
class Course(models.Model):
name = models.CharField(max_length=30)
class Meta:
ordering = ('name',)
или вы можете изменить форму в самом CreateView
, переопределив .get_form(…)
[Django-doc]:
class CreateQuizView(CreateView):
model = Quiz
template_name = 'teacher/new_quiz.html'
fields = [
'name',
'course',
]
def get_form(self, *args, **kwargs):
form = super().get_form(*args, **kwargs)
form.fields['course'].queryset = Course.objects.order_by('name')
return form