django中的数据库一次性设置

时间:2015-07-31 15:57:01

标签: python django

我有一个django应用程序,在启动应用程序或让用户注册之前需要数据库中的几行。

这些包括:组,foriegn关键字段,甚至是几个管理用户。

目前,我有一个我执行的脚本start.py,可以创建组,用户,将管理员用户分配给组等等。

似乎可能有更好的django-ish方法来做到这一点。也许把它放在settings.py中?其他一些方式完全?

2 个答案:

答案 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相同的开发人员),因为现在在所述迁移中生成了简单的代码,所以它非常简单。