我想用户过滤我的通用关系,即
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。
所以,这是说我没有办法得到x字段就像是一个ForeignKey?
我能看到的唯一解决方案就是这样,但是cmon!
tmpl['mydict'] = []
for item in Entry.objects.all():
if request.user in item.content_object.user:
tmpl['mydict'].append(item)
然后返回tmpl上下文而不是原始查询集。这样,tmpl只有该用户的对象列表。