我想按用户过滤我的通用关系,即
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 只有该用户的对象列表。