djang数据库一次性设置

2024-03-28 11:45:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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

其中包括:组、外键字段,甚至几个管理用户。你知道吗

目前,我有一个脚本start.py,可以执行创建组、用户、将管理员用户分配给组等操作。你知道吗

似乎有一个更好的更django-ish的方法来做这件事。也许把这个放在settings.py里?完全是另一种方式?你知道吗


Tags: django方法用户py脚本数据库应用程序settings
2条回答

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来说,这曾经是一个难题,但是由于迁移包含在vanilla Django的1.7版本中(与South是同一个开发人员),这非常容易,这要感谢在上述迁移中生成的直接代码。你知道吗

我觉得你应该用固定装置。 详情请访问 https://docs.djangoproject.com/en/dev/howto/initial-data/

相关问题 更多 >