我得到了這些模型:的Django 1.3:價值觀與外鍵和註釋多對多關係
from django.db import models
class Feed(models.Model):
readers = models.ManyToManyField('auth.user')
# other fields
class Entry(models.Model):
feed = models.ForeignKey(Feed)
read_by = models.ManyToManyField('auth.user')
# other fields
一個Feed
實例已全部它在readers
集的讀者。如果User
讀取Entry
,則User
被添加到read_by
集合中。
現在我堅持了以下的問題:我怎樣才能得到一個User
的未讀Entries
計數,每Feed
的User
讀?
從Feed
側進入,下面的語句排除我所有Feeds
與給定User
讀Entries
:
Feed.objects.filter(readers=user).values('public_id').annotate(models.Count('entry')).exclude(entry__read_by=user)
從另一個Entry
側進入,下面的語句不組Feeds
和計數一起:
Entry.objects.exclude(read_by=user).filter(feed__readers=user).values('feed').annotate(models.Count('id'))
編輯:
我被要求提供示例數據。所以想想下面的設置:
User
U讀取三個Feeds
:FeedOne,FeedTwo,FeedThree。
每Feed
目前有五個Entries
數據庫。二FeedOne的Entries
已經由User
U.閱讀
摘要:
FeedOne
EntryA (read by U)
EntryB (read by U)
EntryC
EntryD
EntryE
FeedTwo
EntryF
EntryG
EntryH
EntryI
EntryJ
FeedThree
EntryK
EntryL
EntryM
EntryN
EntryO
我需要的是未讀Entries
的這個User
的每個Feed
計數:
FeedOne: 3
FeedTwo: 5
FeedThree: 5
你可以發佈示例數據和預期的查詢結果嗎?我認爲這會讓你的問題更容易理解 – jpic 2012-02-24 11:31:16