一个简单的问题是,Django是否可以安装标记为非托管的模型的自定义sql?
我已经定义了自定义sql文件,并将其放在必要的目录中,如django文档所示:
Django提供了一个钩子,用于传递数据库任意SQL,在运行迁移时在CREATE语句之后执行该SQL。您可以使用此钩子填充默认记录,也可以创建SQL函数、视图、触发器等。 钩子很简单: Django只是在应用程序目录中查找一个名为sql/“model name”.sql的文件,其中“model name”是模型的小写名称。
src:https://docs.djangoproject.com/en/1.8/howto/initial-data/#providing-initial-sql-data
问题是,当模型被标记为“Managed= False”时,它无法工作。
就我而言,django只是在CREATE语句后面加上来自自定义sql文件的内容。它解释了创建语句不存在时的行为。
但是Django可以执行我的自定义sql吗?
我的非托管模型是数据库视图的模型,我尝试用这个自定义sql创建该模型。我希望Django在运行"manage.py迁移“时自动运行这个sql。
我对将sql代码放入迁移文件并不感兴趣,因为它很长,我希望保留在sql文件中。
我使用Django 1.8。
发布于 2016-03-09 01:05:43
如果您正确命名您的文件,它将在每次运行manage.py syncdb时执行。
但是,文件的命名有点棘手,而且从文档中看也不清楚。例如,如果在运行在MyModel上的名为MyApp的应用程序中有一个名为MySQL的非托管模型,那么应该有一个位于myapp/sql/mymodel.mysql.sql中的文件。
另外,如果该文件包含一个SQL视图,则该视图必须使用类似于myapp_mymodel的格式命名。
https://stackoverflow.com/questions/31031349
复制相似问题