template.html是
{% for field in types%}
{{field}}<br />
{% endfor %}
我尝试按字母顺序对列表进行排序。在上面的视图中使用此type_list = Types.objects.filter(user=user.id, parent_type_id=True).order_by('title')
进行排序。我不知道我是否正确查询。它没有给出任何错误,但功能没有发生。需要帮助。
由于
答案 0 :(得分:4)
如果您想按字母顺序排序表单的选项,则必须在表单内部而不是视图中修改获取它们的查询,因此请修改表单的__init__
方法中的行这样:
def __init__(self, type_id, *args, **kwargs):
...
type = Types.objects.filter(parent_type_id=type_id).order_by('title')
MY_CHOICES=((type.id, type.title) for type in type)
_type_checkbox.choices = MY_CHOICES
...
希望这有帮助!
答案 1 :(得分:1)
如果您只需要在渲染模板时进行排序,那么我更喜欢dictsort的简单性。
{% for field in types|dictsort:"title" %}
{{field}}<br />
{% endfor %}
请注意,它在资本化方面有一些奇怪的行为。我认为它优先考虑大写单词而不是非大写单词,而不是以不区分大小写的方式运作。