我有兩個模型對象,他們有一個多對多的關係 -Django的查詢集階濾波器
class Note(models.Model):
title = models.CharField(max_length=127)
body = models.TextField()
is_deleted = models.BooleanField()
def __unicode__(self):
return "{} - {}".format(self.title, self.body)
class Tag(models.Model):
tag_name = models.CharField(max_length = 100)
notes = models.ManyToManyField(Note)
我想基於非刪除註釋的計數訂購Tag對象。我可以使用Tag.objects.annotate(notes_count=Count('notes')).order_by('-notes_count')
通過計數筆記進行排序,但是此計數包括將標記刪除爲真的筆記。我的問題是,如何運行這個命令來按未刪除音符的計數來排序標籤(即note.is_deleted = False)?
我試圖限定標籤的方法,其僅返回非刪除音符,即 -
def non_deleted_notes(self):
return self.notes.filter(is_deleted=False)
然後替換Count('notes')
與Count('non_deleted_notes')
,但這導致一個錯誤。
它導致什麼錯誤? –
'FieldError at /' '無法將關鍵字'non_deleted_notes'解析爲字段。選項有:id,notes,tag_name' –
聚合查詢在數據庫級別工作。他們不能基於模型方法 – second