Python 为什么用户和超级用户的查询集过滤行为不同?

Python 为什么用户和超级用户的查询集过滤行为不同?,python,django,Python,Django,当作为超级用户“admin”登录时,我可以按任何字段筛选查询集。但是,当我以普通用户身份登录时,我只能按“用户”字段进行筛选。尝试按任何其他字段筛选将返回空列表 class Question(models.Model): user = models.ForeignKey(User, default=1) verb = models.ForeignKey(Verb) voice = models.ForeignKey(Voice) ... 这很好: def ne

当作为超级用户“admin”登录时,我可以按任何字段筛选查询集。但是,当我以普通用户身份登录时,我只能按“用户”字段进行筛选。尝试按任何其他字段筛选将返回空列表

class Question(models.Model):

    user = models.ForeignKey(User, default=1)
    verb = models.ForeignKey(Verb)
    voice = models.ForeignKey(Voice)
    ...
这很好:

def next_question(request):
    user = request.user
    q = Question.objects.filter(user=user)
当以超级用户身份登录时,此功能正常工作,但以普通用户身份登录失败(
myverb
是my
Verb
模型的一个实例):

我是Django的新手(虽然不是Python),那么我是否缺少一些需要为普通用户设置的权限来修复这种行为

编辑以添加显示数据库中项目的图像

超级用户“管理员”的示例问题:

用户“jamie”的示例问题:


在这个ORM查询中,超级用户和普通用户之间没有区别


您没有任何
问题
实例同时包含
myverb
动词字段和
request.user
用户字段。

没有区别。超级用户也是普通用户

根据用户变量当时设置的值(我假设它是当前登录的用户),您可以将查询解释为:相关用户是当前登录用户的所有问题

因此,如果您作为其他人登录时没有看到任何结果,那是因为您确实没有任何与您相关的问题

如果您确定应该有结果,则可能是您的用户变量未设置为您认为的值。确保它的值是正确的


Ie user=request.user

我已经检查了用户变量,对于'jamie',它是
,而对于'admin',它是
。另请参阅对问题的编辑,该问题显示数据库中确实存在对象。然后应该可以使用。一定是别的东西。你怎么决定它是否有效,我知道了。创建新用户时,我正在复制“管理员”帐户中的所有问题,更改
用户
字段,但不更改
动词
字段或其他字段。这意味着我在比较两个不同的动词宾语,所以没有得到结果。太好了!如果你还没用的话,试试pudb,它太棒了。签出django调试工具栏我主要在PyDev中运行/调试,但目前我一直在添加assert语句并在Chrome中检查调试日志。将签出pudb和工具栏。
def next_question(request):
    user = request.user
    q = Question.objects.filter(user=user, verb=myverb)