ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

我如何编写django 1.8的初始数据

2019-10-28 10:06:06  阅读:220  来源: 互联网

标签:django-migrations python django


我想为用户和选项等表提供初始数据.

对于旧的django来说,固定装置是非常容易的操作方式,但是现在django表示要以迁移方式进行操作,而我对此并不完全了解.

现在我的迁移文件夹中已经有10个迁移了.我很困惑如何将我的初始数据迁移文件保存在哪里.

如果我将其设置为0011_initial_data并将其放入其他迁移中,则它将在大量迁移中丢失,并且对于新用户而言,不容易看到它是什么.而且如果有人压缩迁移,那么没人会知道那里是否有数据.

我想将其单独保存在一个名为“数据迁移”的文件夹中.我怎样才能做到这一点

这是他们网站上的示例代码.但是我应该在哪里放置它,以免混淆

# -*- coding: utf-8 -*-
from django.db import models, migrations

def combine_names(apps, schema_editor):
    # We can't import the Person model directly as it may be a newer
    # version than this migration expects. We use the historical version.
    Person = apps.get_model("yourappname", "Person")
    for person in Person.objects.all():
        person.name = "%s %s" % (person.first_name, person.last_name)
        person.save()

class Migration(migrations.Migration):

    dependencies = [
        ('yourappname', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(combine_names),
    ]

解决方法:

就像@knbk所说的那样,您不能将迁移移出它的位置.但是,如果您希望在其他迁移之间进行迁移,但将夹具数据保存在单独的文件中,则可以执行以下操作:

from django.core.management import call_command
from django.db import models, migrations


class Migration(migrations.Migration):

    def load_data(apps, schema_editor):
        call_command("loaddata", "initial_data.json")

    dependencies = [
        ('other_app', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(load_data),
    ]

Django将以与往常相同的方式查找Fixture文件,并且在迁移数据库时会加载数据.

标签:django-migrations,python,django
来源: https://codeday.me/bug/20191028/1951785.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有