字段可通过Django shell获得,但不能通过web应用程序获得

字段可通过Django shell获得,但不能通过web应用程序获得,django,django-queryset,Django,Django Queryset,在网页上,我发现以下错误: FieldError at /foo/bar/ Cannot resolve keyword 'foos' into field. Choices are: __unused__, [snip] 问题代码是 User.objects.filter(foos__name='bar') 当我在shell中运行它时,它会工作,我会得到一个记录集: >>> User.objects.filter(foos__name='bar') [<User:

在网页上,我发现以下错误:

FieldError at /foo/bar/
Cannot resolve keyword 'foos' into field. Choices are: __unused__, [snip]
问题代码是

User.objects.filter(foos__name='bar')
当我在shell中运行它时,它会工作,我会得到一个记录集:

>>> User.objects.filter(foos__name='bar')
[<User: JordanReiter>]
>>User.objects.filter(foos\uu name='bar')
[]
但是在网页上我得到了上面的例外

我以前从未遇到过这个问题,我想知道我是否遗漏了什么

更新 基于对web上的“选项是:…”和shell中的“选项是:…”进行区分,shell中似乎有7个字段可用,如果我在web上进行查询,这些字段将不可用。它们似乎是指向用户的普通
ForeignKey
字段,与其他有效字段没有区别

测试至今
  • 安装的应用程序
    对于这两种设置都是相同的
  • runserver
    版本也可以正常工作(正如预期的那样)
  • 在这两种情况下使用的
    User
    是相同的,并且是
    django.contrib.auth.models.User
  • shell用户和web应用程序用户的相关名称肯定不同<代码>用户。_meta.get_all_related_objects()在shell中显示的相关字段比从web应用程序转储的字段多7个左右
  • 设置值也基本相同(有
    TEST\u XYZ
    设置,但这些设置不会影响任何东西)

只有在安装了外键的应用程序中,才将其添加到型号中。我知道你说你的settings.py与开发中的相同,但不知何故,你的
foo
应用程序是在本地安装的,而不是在服务器上。您是否有本地设置覆盖功能?

这只是一种回答。结果表明,该字段不可用的原因是,在首次编译应用程序时,所有已安装应用程序的模型都没有正确加载,因此应用程序始终认为某些字段不存在,即使他们识别出这些字段的模型确实存在。这似乎与之前同样令人困惑的问题有关:


哦,那么我是如何修改导入模型的代码区域的,而这些模型是web服务器在第一次请求时无法找到的。不知何故,省略这些字段意味着服务器将识别出存在问题的字段。超级古怪

“User.object.filter”这段代码正确吗,或者缺少一个“s”?Longshot;您是否在代码中导入了不同的用户(即不是contrib.auth.models.user)?web服务器是否使用与shell相同的
settings.py
?如果尚未创建与
Foo
模型的反向FK关系,则可能Web服务器未加载包含Foo模型的应用程序。是的,这些应用程序使用相同的settings.py文件。此外,如果是syncdb问题,为什么它在shell中使用相同的数据库工作?否,安装的\u应用程序是相同的。我将把这些信息添加到问题中。哇。在经历了几天的严重挫折后,你让我走上了正确的道路。非常感谢您花时间记录此问题!