2016-11-18 2 views
0

私の通知モデルは一般的なものであり、オブジェクトを保持できます。一般的なコンテンツが空のフィルタオブジェクト

ユーザが通知に関連するオブジェクトを削除するたびに、代わりにNoneTypeオブジェクトを指してしまうことになります。私は、ユーザーに何も関係しない通知を除外したい。

私はすでに試した:

Notification.objects.exclude(object=None) 

Notification.objects.filter(object=None) 

をただし、両方は私に、私は、一般的なコンテンツタイプのオブジェクトに逆の関係クエリを行うことができないエラーが発生します。存在しないオブジェクトを指し示すすべての通知をフィルタリングまたは取得するにはどうすればよいですか?

答えて

1

あなたが見つけたので、filter()の一般的な外部キーを使用することはできません。ただし、関連するオブジェクトのないオブジェクトを除外するだけで済みたいので、代わりにobject_idにフィルタをかけることができます。

Notification.objects.filter(object_id__isnull=False) 
+0

残念ながら、idはすでに割り当てられているため、残念ながらこれは機能しません。コンテンツタイプとIDは割り当てられていますが、問題のオブジェクトは削除されています。 –

+0

ジェネリックな外部キーが存在するモデルで['GenericRelation'](https://docs.djangoproject.com/en/1.10/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericRelation)を定義すると、通常はポイントすると、関連オブジェクトが削除されたときに通知が削除されます。これをしないと、Djangoは関連するオブジェクトが存在しない場合に通知をフィルタする簡単な方法を提供しません。それには、関連するすべてのモデルへの結合と、それらの関連するモデルが何であるかを知るための追加のクエリが必要です。 – Alasdair

+0

そこに行く!それを私がそれを受け入れることができるように答えに加えてください。 –

関連する問題