如何创建一个临时表,使用Django的ORM按两个标准对同一列进行排序?

时间:2013-04-23 06:39:41

标签: mysql django

CREATE TEMPORARY TABLE TEMP (SELECT * FROM TABLE ORDER BY COLUMN_A);
SELECT * FROM TEMP ORDER BY COLUMN_B;

我有一个表存储每个城市的最后24小时下午点,我想选择每个城市的最新下午点。所以我使用“选择*从city_pm订单按日期desc限制the_count_of_city”,然后我想要一个每个城市的最新pm点的排名,所以我使用select之前创建一个临时表,并按下午点来排序表...这是我想要完成的,我无法弄清楚一个更好的所以我决定创建一个临时表。

1 个答案:

答案 0 :(得分:2)

我相信左联盟可能会在这种情况下提供帮助。您的目标是按最后一个PM点订购城市。

假设您的city表的主键是city_id,而另一个名为city_pm的表包含PM点,并且您有两个模型City和City_Pm ......

在您看来:

cities = City.objects.all()

在你的模特中:

class City(models.Model):
    # fields ...

    def get_latest_pm(self):
        try:
            return City_Pm.objects.filter(city_id=self.pk).order_by("-date")[:1].get()
        except:
            return None

在你的模板中:

{% for city in cities %}
    {{ city.get_latest_pm }}
{% endfor %}