代码之家  ›  专栏  ›  技术社区  ›  nikola

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

  •  0
  • nikola  · 技术社区  · 14 年前

    documentation :

    Django提供了一个钩子,用于传递运行syncdb时在create table语句之后执行的数据库任意SQL。您可以使用这个钩子来填充默认记录,也可以创建SQL函数、视图、触发器等。

    钩子很简单:Django只是在应用程序目录中查找一个名为sql/[model name].sql的文件,其中[model name]是模型的小写名称。

    不是那么简单。当我的模型在应用程序的子模块中声明并且使用应用程序标签机制时,这似乎不起作用:

    in myapps/foo/models/bar.py:
    
    class Baz(models.Model):
       ...
        class Meta:
            app_label = "foo"
    

    提供myapps/foo/sql/baz.sql不起作用,foo_baz.sql也不起作用。

    有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Chris Lawlor    14 年前

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

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