0
class Photo(models.Model):
    ...    
    viewsT = models.ManyToManyField('PhotoViewT', symmetrical=False)
    ...

class PhotoViewT(models.Model):
    user = models.ForeignKey(User)
    creationdate = models.DateTimeField()

写真の情報を「Photo」テーブルに、ビューの情報を「PhotoViewT」テーブルに保存します(写真を見た「ユーザー」と見たときの「作成日」)。「写真」には、ビューにm2mフィールドがあり、すべてのビューに関する情報を追加します。

私の仕事は写真を取得することです。写真は現在定義されているユーザーによってまだ見られていません。このクエリを作成する方法がわかりません。

何かのようなもの

Photo.objects.filter(viewsT__user__doesnt_contain=targetUser)

上記の式はほとんど機能しません。解決策はありますか?前もって感謝します!

4

3 に答える 3

1

ドキュメントを参照してください。試す

Photo.objects.exclude(viewsT__user=targetUser)
于 2013-03-09T14:47:24.150 に答える
0

Photo.photoviewtset.all()PhotoViewTに関連付けられているすべてのインスタンスを取得しますPhoto

Photo.photoviewtset.filter(user=<your_current_user)によってフィルタリングされたPhotoViewTインスタンスに関連付けられているすべてのインスタンスをフェッチします。Photocurrent_user

Photo注:このためにモデルにManyToManyFieldは必要ありません

于 2013-03-09T14:38:46.103 に答える
0
 Photo.objects.exclude(viewsT__in=PhotoViewT.objects.filter(user=request.user))

 OR

 Photo.objects.filter(~Q(viewsT__in=PhotoViewT.objects.filter(user=request.user)))
于 2013-03-09T14:41:25.547 に答える