Django:无法解析泛型关系上的关键字

时间:2013-07-08 13:48:41

标签: python django django-models

我想用户过滤我的通用关系,即

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只有该用户的对象列表。

0 个答案:

没有答案