如何在使用app标签时提供SQL初始数据?

时间:2010-06-29 13:54:07

标签: sql django django-models

来自documentation

  

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也不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

不确定您要做什么,但您可以在应用中编写一个监听post_syncdb信号的管理模块。

但如果您只是想填充数据库,那么最好使用灯具:http://docs.djangoproject.com/en/dev/howto/initial-data/