我想创建一个 Django 下拉菜单,将字符串“-- Select --”作为默认选项。当用户单击下拉小部件时,他们将看到三个选项,他们必须选择其中之一:
-- 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
Student 表单只是一个 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 表单而不是 ModelForm,然后将排名设置为 ChoiceField。但是,在这种情况下,我使用 Student 和 Percentile 之间的外键关系,所以我认为这种方法不适用。尽管我展示的方法有效,但对我来说似乎不是很“干净”,因为“选择”确实不是百分位排名值。
谢谢!