当我想在django模型中基于选择对对象进行排序时,我很难在jQuery DataTables中使用排序功能。使用包含的代码片段,我可以基于选择中的值1..n对它进行排序,但由于它将这些值视为字符串,排序无法正常工作。它认为10,11和12比2到9之间的所有值都要低。我该如何解决这个问题?
我的django应用里有这样一个模型:
class Action(models.Model):
STATUS_CHOICES = (
('1', 'Status 1'),
('2', 'Status 2'),
('3', 'Status 3'),
('4', 'Status 4'),
('5', 'Status 5'),
('6', 'Status 6'),
('7', 'Status 7'),
('8', 'Status 8'),
('9', 'Status 9'),
('10', 'Status 10'),
('11', 'Status 11'),
('12', 'Status 12'),
)
status = models.CharField(max_length=100, choices=STATUS_CHOICES, default=1, verbose_name='Status')
从视图中,我将把所有内容渲染到模板中:
def actions_view(request, *args, **kwargs):
actions = Action.objects.all()
context = {
'actions':actions,
}
return render(request, "actions.html", context)
在模板中,所有内容都将显示在jQuery数据表中:
<table id="actionTable" class="table table-striped">
<thead>
<tr>
<th>Action</th>
</tr>
</thead>
<tbody>
{% for action in actions %}
<tr>
<td><span style="display:none;">{{ action.status }}</span>{{ action.get_status_display }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<script>
$(document).ready(function () {
$('#actionTable').DataTable({
fixedHeader: false,
paging: false,
searching: false,
info: false,
"language": {
"zeroRecords": "No action",
},
});
});
</script>
1条答案
按热度按时间5tmbdcev1#
对于这种情况有两种解决方案:
**更新:**显然
natsort
完成了这项工作(from comments on this question)