一般的な関係をユーザーごとにフィルタリングしたい
Entry.objects.filter(content_object__user=request.user)
しかし、私はこのメッセージを受け取ります:
キーワード 'content_object' をフィールドに解決できません。選択肢は次のとおりです: content_type、id、object_id、reason、request_made
class Unsubscribe(models.Model):
"""
Notes:
See: http://www.screamingatmyscreen.com/2012/6/django-and-generic-relations/
"""
content_type = models.ForeignKey(ContentType, help_text="Represents the name of the model")
object_id = models.PositiveIntegerField(help_text="stores the object id")
content_object = generic.GenericForeignKey('content_type', 'object_id')
reason = models.CharField(max_length=60)
request_made = models.DateTimeField(auto_now_add=True,
help_text="Shows when object was created.")
アップデート:
私はこの引用を見つけました:
ForeignKey と GenericForeignKeys には少し違いがあると言ったことを思い出してください。クエリでは使用できません。Entry.objects.filter(content_object...) は使用できません。他のすべてを使用できますが、content_object は使用できません。
これは、ForeignKey のように x フィールドを取得する方法がないということですか?
私が見ることができる唯一の解決策は、このようなものですが、cmon!
tmpl['mydict'] = []
for item in Entry.objects.all():
if request.user in item.content_object.user:
tmpl['mydict'].append(item)
次に、元のクエリセットではなく tmpl コンテキストを返します。このように tmpl には、そのユーザーによるオブジェクトのリストしかありません。