gpt4 book ai didi

django - 字段可通过 Django shell 使用,但不能通过 Web 应用程序使用

转载 作者:行者123 更新时间:2023-12-02 09:01:42 26 4
gpt4 key购买 nike

在网页上,我收到以下错误:

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>]

但是在网页上我得到了上面的异常。

我以前从未遇到过这个问题,我想知道我是否遗漏了一些东西?

更新

根据在网络上和 shell 中的“选择是:...”之间的差异,似乎有 7 个字段在 shell 中可用,如果我在网络上执行查询,这些字段将不可用。它们看起来是指向 User 的普通 ForeignKey 字段,与其他有效的字段没有区别。

到目前为止已测试

  • INSTALLED_APPS 两种设置均相同
  • runserver 版本也可以工作(正如预期的那样)
  • 两种情况下使用的
  • User 是相同的,都是 django.contrib.auth.models.User
  • shell 的用户和网络应用的用户的相关名称绝对不同。 shell 中的 User._meta.get_all_lated_objects() 显示的相关字段比我从 Web 应用程序中转储的相关字段多大约 7 个。
  • 设置值也基本相同(其中一个具有 TEST_XYZ 设置,但这些设置不会产生任何影响)

最佳答案

这只是一个答案。事实证明,该字段不可用的原因是,首次编译应用程序时,所有已安装应用程序的模型都未正确加载,因此应用程序永久认为某些字段不存在,即使它们识别了模型这些领域确实存在。它似乎与之前的同样令人困惑的问题有关:

SO: Internal Server error on the first request (and only the first request) after server reload

哦,所以我解决这个问题的方法是更改​​导入 Web 服务器在第一个请求时找不到的模型的代码区域。不知何故,省略这些意味着服务器会识别出有问题的字段存在。 super 奇怪!

关于django - 字段可通过 Django shell 使用,但不能通过 Web 应用程序使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7971120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com