Я хотел бы создать раскрывающийся список Django, который имеет строку «- Select -» в качестве выбора по умолчанию. Когда пользователь нажимает на ниспадающем виджете, они будут видеть три варианта, один из которых они должны выбрать:Создайте раскрывающийся список Django с параметром «Выбрать» по умолчанию?
-- Select -- <= default choice visible
95th percentile <= other choices
75th percentile <= other choices
50th percentile <= other choices
Я создал модель Django Student и связанный с ним Percentile поиск модель:
class Student(models.Model):
student = models.ForeignKey(User)
student_percentile = models.ForeignKey(Percentile)
class Percentile(models.Model):
# Contains "-- Select --", "95th Percentile", etc., etc.
ranking = models.CharField(max_length=15)
def __unicode__(self):
return ranking
форма Студент просто Джанго ModelForm:
from django import forms
from app.models import Student
class StudentForm(forms.ModelForm)
class Meta:
model = Student
# Custom form validator for student form will go here
Моя идея состояла в том, что я хотел бы создать собственный валидатор в StudentForm, которая будет проверять, что пользователь выбирает процентиль ранжирования значение, чей индекс больше 1, так как строка первая в столбце рейтинга таблицы Percentile содержит строку «- Select -». Это правильный способ реализовать этот тип раскрывающегося списка в Django? Я понимаю, что я могу создать переменную RANKING_CHOICES, которая содержит ранжирование, если бы я использовал форму Django вместо ModelForm, а затем рейтинг был ChoiceField. Однако в этом случае я использую отношения с внешним ключом между Student и Percentile, поэтому я не думаю, что этот подход применим. Хотя подход, который я показал, работает, он не кажется мне очень «чистым», поскольку «Выбрать» действительно не является значением рейтинга процентиля.
Спасибо!
Вы все еще можете присоединить варианты к ModelForm с CharField. И вставьте (0, ('select', 'select')) к выборам. –
Абсолютно не ставьте --Выберите-- в вашей модели Percentile (см. @ Srinivas-reddy-thatiparthy для альтернативы). Возможно, вы захотите сделать второй взгляд и решить, действительно ли вам нужна модель Percentile ... также вы можете обнаружить, что если вы сохраните ее как модель, это ранжирование лучше хранится как целое/десятичное, а не символьная строка. –
Спасибо Srinivas. И спасибо Джозефу. Выполнение того, что я предлагал, «плохо пахло». Рад, что вы смогли это подтвердить. – William