2

template.html 是

{% for field in types%}
 {{field}}<br />
{% endfor %}

我尝试按字母顺序对列表进行排序。type_list = Types.objects.filter(user=user.id, parent_type_id=True).order_by('title')在上面的视图中使用它进行排序。我不知道我是否查询正确。它没有给出任何错误,但功能没有发生。需要帮助。

谢谢

4

2 回答 2

5

如果要按字母顺序排列表单的选项,则必须在表单内部而不是视图中修改获取它们的查询,因此修改__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
    ...

希望这可以帮助!

于 2013-05-22T16:13:17.297 回答
1

如果只需要在渲染模板时进行排序,那么我更喜欢dictsort的简单性。

{% for field in types|dictsort:"title" %}
 {{field}}<br />
{% endfor %}

请注意,它在大小写方面有一些奇怪的行为。我认为它优先考虑大写单词而不是大写单词,而不是以不区分大小写的方式运行。

于 2015-01-20T00:57:35.147 回答