sql - Django:生成博客的事件条目列表。这有效率吗?

标签 sql database django performance

下面的查询执行了我希望它执行的操作,但是,我不知道它是否有效。我浏览了 Django aggregation文档,将它们放在一起,看着查询并像一只迷糊的狗一样侧着头。

查询实际上做的是发布条目的“name”和“name_slug”,其中有一个或多个批准的评论,并按最新评论的“date_published”字段对结果进行排序。结果是最近事件条目的列表。

那么几个问题。 (1) 您在查询中看到的任何内容是否只是一个简单的禁忌。 (2) 有什么方法可以查看查询数据库的 RAW SQL?

模型:

class Entry(models.Model):
    name = models.CharField(max_length=200, unique=True)
    name_slug = models.SlugField(max_length=200, blank=True, editable=False, unique=True)
    date_published = models.DateTimeField()
    is_published = models.BooleanField(default=False)

class Comment(models.Model):
    entry = models.ForeignKey('Entry')
    date_published = models.DateTimeField()
    approved_choices = (('N', 'No'), ('Y', 'Yes'), ('M', 'Needs Moderation'),)
    approved = models.CharField(max_length=1, choices=approved_choices, default='N')

查询:

active_entry_list = Entry.objects
    .values('name', 'name_slug')
    .filter(is_published=True, comment__approved='Y')
    .annotate(latest_comment=Max('comment__date_published'),comments=Count('comment'))
    .filter(comments__gte=1)
    .order_by('-latest_comment')
    [:6]

最佳答案

2) 是的,如果 settings.DEBUG 为真,原始 sql 查询存储在 django.db.connection.queries 中。

http://blog.michaeltrier.com/2007/8/11/display-the-sql-django-orm-is-generating

关于sql - Django:生成博客的事件条目列表。这有效率吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/461204/

相关文章:

MySQL 值 0 或 1,如果行存在于其他表中

mysql - 应该在SQL中引用名字吗?

mysql - 许多单独的查询 v. 一个大的查询

php - 无法进行图像更新

python - 在 Django Admin 中更新表关系

python - django 和 csrf_token 问题

mysql - 一起使用 SQL SELECT 和 COUNT

mongodb - 对于广泛的读写操作 MongoDB vs Cassandra

python - 从我的 Django 应用程序中的数据库中选择数据

值大于值的 SQL COUNT 列