我有一个django应用程序,在启动应用程序或让用户注册之前需要数据库中的几行。
这些包括:组,foriegn关键字段,甚至是几个管理用户。
目前,我有一个我执行的脚本start.py
,可以创建组,用户,将管理员用户分配给组等等。
似乎可能有更好的django-ish方法来做到这一点。也许把它放在settings.py
中?其他一些方式完全?
答案 0 :(得分:2)
我认为你应该使用灯具。 详情请访问 https://docs.djangoproject.com/en/dev/howto/initial-data/
答案 1 :(得分:1)
Django的方法是使用Data Migrations。绝对推荐使用灯具(我认为它主要用于测试数据)
基本上,您将进行架构迁移,您将在其中定义模型,字段等。创建所有必要的模型以保存数据后,您将创建一个额外的迁移,您将在其中运行类似于Model.objects.create(field1='value1')
的代码
我发现this guide对理解很有帮助。以下是其中的示例:
# encoding: utf8
from django.db import models, migrations
from datetime import date
def load_data(apps, schema_editor):
PriceHistory = apps.get_model("historical_data", "PriceHistory")
PriceHistory(date=date(2013,11,29),
price=1234.00,
volume=354564,
total_btc=12054375,
).save()
PriceHistory(date=date(2012,11,29),
price=12.15,
volume=187947,
total_btc=10504650,
).save()
class Migration(migrations.Migration):
dependencies = [
('historical_data', '0002_auto_20140710_0810'),
]
operations = [
migrations.RunPython(load_data)
]
请注意,与架构迁移的唯一区别是对migrations.RunPython
调用自定义函数,该函数可以创建您想要的任何数据。
这曾经是South的一点痛苦,但由于迁移包含在版本1.7的香草Django(由与South相同的开发人员),因为现在在所述迁移中生成了简单的代码,所以它非常简单。