【发布时间】:2019-01-14 19:59:26
【问题描述】:
我有两个模型:
class Actors(models.Model):
name = models.CharField(max_length=128)
...
class Movies(models.Model)
title = models.CharField(max_length=128)
casting = models.ManyToManyField("actors.Actors", related_name="casting")
...
我正在根据他们出演的电影数量来寻找订购演员。 Django 自动生成了一个带有 actor_id 和 movies_id 的表,命名为 movies_movies_casting :
+-----+-----------+-----------+
| id | movies_id | actors_id |
+-----+-----------+-----------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 3 | 1 |
...
这里的演员 #1 在电影 #1、#2 和 #3 中扮演。演员 #2 只在电影 #1 中出演。
这是 MySQL 中用于获取我想要的内容的请求:
SELECT actors_id, COUNT(movies_id) as count FROM movies_movies_casting GROUP BY actors_id ORDER BY count;
结果是:
+-----------+-------+
| actors_id | count |
+-----------+-------+
| 15 | 29 | // actor #15 played in 29 movies
| 12 | 21 |
| 24 | 17 |
| 3 | 16 |
| 20 | 15 |
| 21 | 14 |
...
在 Django 中使用什么请求来得到这个结果?
【问题讨论】:
-
movies_movies_casting.objects.values('actors').annotate(Count('movies'))
标签: django group-by count many-to-many sql-order-by