2

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

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 字段?

我能看到的唯一解决方案是这样的,但是 cmon!

tmpl['mydict'] = []
for item in Entry.objects.all():
    if request.user in item.content_object.user:
    tmpl['mydict'].append(item)

然后返回 tmpl 上下文而不是原始查询集。这样 tmpl 只有该用户的对象列表。

4

0 回答 0