我想创建一个Django下拉菜单,其中包含字符串“ - Select - ”作为默认选项。当用户点击下拉窗口小部件,他们会看到三个选项,其中之一,他们必须选择:用“选择”作为默认选择创建Django下拉菜单?
-- Select -- <= default choice visible
95th percentile <= other choices
75th percentile <= other choices
50th percentile <= other choices
我创建了一个Django的学生模型和相关百分查找模型:
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
学生的形式只是一个Django的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 Form而不是ModelForm,然后排名为ChoiceField。但是,在这种情况下,我使用Student和Percentile之间的外键关系,所以我认为这种方法不适用。虽然我所展示的方法很有效,但对我来说这似乎并不“干净”,因为“选择”的确不是百分位排名值。
谢谢!
您仍然可以使用CharField将选择附加到ModelForm。并向选择插入(0,('select','select'))。 –
绝对不要放在你的百分点模型中(请参阅@ srinivas-reddy-thatiparthy替代)。您可能需要进行第二次查看,然后决定是否真的需要百分位数模型......如果您将其保留为模型,则可能会发现该排名最好以整数/小数而非字符串形式存储。 –
谢谢Srinivas。并感谢约瑟夫。做我提议的“闻起来很糟糕”。很高兴你能够证实这一点。 – William