- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一些抛出的代码导致 syncdb 抛出错误(因为它试图在创建表之前访问模型)。
有没有办法让代码不在 syncdb 上运行?像这样的东西:
if not syncdb:
run_some_code()
谢谢:)
编辑:PS - 我考虑过使用 post_init 信号...作为访问数据库的代码,这是个好主意吗?
这里有一些要求的更多信息:)
我遇到过几次,例如...我在 django-cron 上进行黑客攻击,并确定有必要确保在加载 django 时不存在现有作业(因为它会搜索所有已安装的应用程序作业并在加载时添加它们)。
所以我在__init__.py
文件的顶部添加了以下代码:
import sqlite3
try:
# Delete all the old jobs from the database so they don't interfere with this instance of django
oldJobs = models.Job.objects.all()
for oldJob in oldJobs:
oldJob.delete()
except sqlite3.OperationalError:
# When you do syncdb for the first time, the table isn't
# there yet and throws a nasty error... until now
pass
出于显而易见的原因,这是废话。它与 sqlite 相关联,我有更好的地方可以放置此代码(这正是我遇到这个问题的方式)但它有效。
如您所见,您得到的错误是操作错误(在 sqlite 中),堆栈跟踪显示类似“未找到表 django_cron_job”的内容
最后,目标是在加载任何页面之前运行一些代码。
这可以通过在 urls.py 文件中执行它来完成,因为它必须在可以提供页面之前导入(显然)。
而且我能够删除那个丑陋的 try/except block :) 感谢上帝(和 S. Lott)
最佳答案
“编辑:PS - 我考虑过使用 post_init 信号...作为访问数据库的代码,这是个好主意吗?”
从不。
如果您有在创建表之前访问模型的代码,那么您会遇到很大很大的问题。您可能正在做一些严重错误的事情。
通常,您大约运行一次 syncdb。数据库已创建。您的网络应用程序使用数据库。
有时,您会更改设计、删除并重新创建数据库。然后您的 Web 应用程序会长时间使用该数据库。
您(通常)不需要 __init__.py
模块中的代码。您应该(几乎)永远不会拥有在 __init__.py
模块中执行实际工作的可执行代码。这是非常非常罕见的,不适合 Django。
我不确定你为什么在 Django Cron 时搞乱 __init__.py
表示您在 urls.py
中安排日程安排。
编辑
清除记录是一回事。
乱用 __init__.py
和 Django-cron 的 base.py
显然是完全错误的方法。如果有那么复杂,那是你做错了。
不可能说出你想做什么,但它应该是微不足道的。
您的 urls.py
只能在 syncdb 之后以及所有 ORM Material 都已正确配置和绑定(bind)之后运行。
例如,您的 urls.py
可以删除一些行,然后将一些行添加到表中。至此,所有 syncdb 问题都解决了。
为什么你的逻辑不在 urls.py
中?
关于python - 防止代码在 syncdb 期间运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/937316/
我尝试理解[c代码 -> 汇编]代码 void node::Check( data & _data1, vector& _data2) { -> push ebp -> mov ebp,esp ->
我需要在当前表单(代码)的上下文中运行文本文件中的代码。其中一项要求是让代码创建新控件并将其添加到当前窗体。 例如,在Form1.cs中: using System.Windows.Forms; ..
我有此 C++ 代码并将其转换为 C# (.net Framework 4) 代码。有没有人给我一些关于 malloc、free 和 sprintf 方法的提示? int monate = ee; d
我的网络服务器代码有问题 #include #include #include #include #include #include #include int
给定以下 html 代码,将列表中的第三个元素(即“美丽”一词)以斜体显示的 CSS 代码是什么?当然,我可以给这个元素一个 id 或一个 class,但 html 代码必须保持不变。谢谢
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我试图制作一个宏来避免重复代码和注释。 我试过这个: #define GrowOnPage(any Page, any Component) Component.Width := Page.Surfa
我正在尝试将我的旧 C++ 代码“翻译”成头条新闻所暗示的 C# 代码。问题是我是 C# 中的新手,并不是所有的东西都像 C++ 中那样。在 C++ 中这些解决方案运行良好,但在 C# 中只是不能。我
在 Windows 10 上工作,R 语言的格式化程序似乎没有在 Visual Studio Code 中完成它的工作。我试过R support for Visual Studio Code和 R-T
我正在处理一些报告(计数),我必须获取不同参数的计数。非常简单但乏味。 一个参数的示例查询: qCountsEmployee = ( "select count(*) from %s wher
最近几天我尝试从 d00m 调试网络错误。我开始用尽想法/线索,我希望其他 SO 用户拥有可能有用的宝贵经验。我希望能够提供所有相关信息,但我个人无法控制服务器环境。 整个事情始于用户注意到我们应用程
我有一个 app.js 文件,其中包含如下 dojo amd 模式代码: require(["dojo/dom", ..], function(dom){ dom.byId('someId').i
我对“-gencode”语句中的“code=sm_X”选项有点困惑。 一个例子:NVCC 编译器选项有什么作用 -gencode arch=compute_13,code=sm_13 嵌入库中? 只有
我为我的表格使用 X-editable 框架。 但是我有一些问题。 $(document).ready(function() { $('.access').editable({
我一直在通过本教程学习 flask/python http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-wo
我想将 Vim 和 EMACS 用于 CNC、G 代码和 M 代码。 Vim 或 EMACS 是否有任何语法或模式来处理这种类型的代码? 最佳答案 一些快速搜索使我找到了 this vim 和 thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve this
这个问题在这里已经有了答案: Enabling markdown highlighting in Vim (5 个回答) 6年前关闭。 当我在 Vim 中编辑包含 Markdown 代码的 READM
我正在 Swift3 iOS 中开发视频应用程序。基本上我必须将视频 Assets 和音频与淡入淡出效果合并为一个并将其保存到 iPhone 画廊。为此,我使用以下方法: private func d
pipeline { agent any stages { stage('Build') { steps { e
我是一名优秀的程序员,十分优秀!