下面的查詢做,我想什麼做的,但是,我不知道,如果它是有效的。我瀏覽了Django aggregation文檔,將它扔在一起,看着查詢並像困惑的狗一樣將我的頭部側向傾斜。Django:生成博客的活動條目列表。這是否有效?
什麼查詢實際上做的是得到發表條目的「名稱」和「name_slug」有一個或多個已覈準的意見和訂單的最新評論的「date_published」字段的結果。結果是最近激活的Entry的列表。
所以幾個問題。 (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]