更改modelchoicefield django的排序顺序

时间:2011-07-11 20:56:24

标签: django-forms

如何更改ModelChoiceField billing_company中值的顺序?

models.py

class Company(models.Model):
    name = models.CharField(max_length=30, unique=True)

forms.py

billing_company = forms.ModelChoiceField(Company.objects, required=True)

感谢您的帮助。 汤姆

2 个答案:

答案 0 :(得分:9)

ModelChoiceField将QuerySet作为其第一个参数,因此您应该能够传递有序集:

forms.ModelChoiceField(Company.objects.order_by('-pk'), required=True)

答案 1 :(得分:0)

如果您想在模板中对其进行排序,您可以手动呈现表单并迭代选项并使用 dictsort 模板标签(或根据您喜欢的排序的任何其他模板标签)对它们进行排序,例如

{% for value, option in form.fields.billing_company.choices|dictsort:1 %}
    <option value="{{ value }}">{{ option }}</option>
{% endfor %}