如何在Django中按字段排序

时间:2018-07-23 15:00:59

标签: django

对于我来说,正确完成订单非常重要。我需要按索引对我的MonthlySpending对象进行排序。我已经尝试过从django模板获取dictsort,但是不起作用。

我也将排序包含在模型中,但是,排序未在HTML中显示,但在管理员中显示。

反正我可以按其索引对对象进行排序吗?

HTML

{% for month in object.monthlyspending_set.all|dictsort:"index" %}
    <tr class="yeardata ">
        <td>{{ month.name }}</td>
        <td>$ {{ month.monthly_income }}</td>
        <td>$ <a href="{% url 'finances:detail' month.slug %}">{{ month.target_savings }}</a></td>
        <td>$ {{ month.actual_savings }}</td>
        <td>{{ month.percentage_met }} %</td>
    </tr>
  {% endfor %}

Models.py

class MonthlySpending(models.Model):
    name = models.CharField(max_length=100)
    annualspending = models.ForeignKey(AnnualSpending, on_delete=models.CASCADE)
    index = models.IntegerField()
    slug = models.SlugField()
    objects = models.Manager

    class Meta:
        ordering = ['index']

2 个答案:

答案 0 :(得分:0)

object.monthlyspending_set.all().order_by('index') -> ascending order

object.monthlyspending_set.all().order_by('-index') -> descending order

https://docs.djangoproject.com/en/2.0/ref/models/querysets/#order-by

答案 1 :(得分:0)

我建议您先将order_by用于查询集,然后再传递给它。文档为here。您可以在自己的视图中执行类似some_query_set.order_by("index")的操作。