Django提供了一个钩子,用于在运行syncdb时,在CREATE TABLE语句之后执行数据库任意SQL。您可以使用此挂钩填充默认记录,也可以创建SQL函数,视图,触发器等。
钩子很简单:Django只在你的app目录中查找名为sql / [modelname] .sql的文件,其中[modelname]是小写的模型名称。
这不是那么简单。当我的模型在应用程序的子模块中声明并使用应用程序标签机制时,这似乎不起作用:
in myapps/foo/models/bar.py:
class Baz(models.Model):
...
class Meta:
app_label = "foo"
提供myapps / foo / sql / baz.sql不起作用,foo_baz.sql也不起作用。
有什么想法吗?
答案 0 :(得分:2)
不确定您要做什么,但您可以在应用中编写一个监听post_syncdb信号的管理模块。
但如果您只是想填充数据库,那么最好使用灯具:http://docs.djangoproject.com/en/dev/howto/initial-data/