【发布时间】:2010-11-19 17:40:35
【问题描述】:
我在 Django 中有一个模型,下面的示例代码(不是我的实际代码):
class Department(models.Model):
name = models.CharField(max_length=100)
abbreviation = models.CharField(max_length=4)
假设我在 Django shell 中执行以下操作:
>>> Department(name='Computer Science',abbreviation='C S ').save()
>>> Department(name='Mathematics',abbreviation='MATH').save()
>>> Department(name='Anthropology',abbreviation='ANTH').save()
我现在将这四个部门存储在我的数据库中。假设我们有另一个类Course,它属于Department:
class Course(models.Model):
department = models.ForeignKey('Department')
number = models.IntegerField()
class CourseForm(ModelForm):
class Meta:
model = Course
如果我通过引用一个变量(例如 form)直接在模板中呈现 ModelForm 对象,该变量已被传递下来,则部门会出现在下拉框(HTML 选择框)中。到目前为止一切顺利。
问题是:选择框中的项目是按ID排序的。所以它们显示为:
- 计算机科学
- 数学
- 人类学
但是,我希望它们按字母顺序排序,即
- 人类学
- 计算机科学
- 数学
如何更改这些项目在ModelForm 代码或Model 代码而不是模板中的排序方式?
一般来说,当由ModelForm 生成时,我如何自定义特定字段或小部件的工作方式?
【问题讨论】:
标签: python django django-templates django-forms