Отображение значений в выпадающем списке в обратном порядке в Django Forms
class FineForm(forms.ModelForm):
class Meta:
model = Fine
fields = ['student', 'fine']
widgets = {
'student': forms.Select(attrs={'class': 'form-control'}),
'fine': forms.TextInput(attrs={'class': 'form-control'}),
}
У меня есть форма Django. Поле student является внешним ключом. Я хочу в этой форме в шаблоне показывать студентов в обратном порядке. Помогите пожалуйста.
вы всегда можете сделать что угодно с выбором в форме.
Легкий, но не лучший способ:
class FineForm(forms.ModelForm):
... # your staff
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# after super() widget.choices in Select is a list
self.fields['students'].widget.choices = self.fields['students'].widget.choices[::-1]
Мне не нравится это решение.
Вам нужно вернуть выбор только перед рендерингом, не так ли? Вот почему вы должны попробовать другие возможности:
- add order_by in Student._meta
- override order_by in self.fields['students'].queryset
- используем собственный ModelChoiceGenerator для объектов Student.objects
- используйте FormFieldCallback в FormFactory
- определите свой собственный Field.widget.render или form.render
- рендерите поле вручную в своем шаблоне
- e.t.c (я не знаю ваш проект)