python - 如何在 Django 数据迁移中创建新对象?

标签 python django

我有一个新的 django 项目,之前没有迁移,因此我想创建我的第一个迁移,将一些行插入到表中。这就是我所拥有的:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


def create_types(apps, schema_editor):
    Type = apps.get_model("core", "Type")
    type = Type()


class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
        migrations.RunPython(create_types)
    ]

我有一个应用程序核心,它有一个名为 Type 的模型,我想创建几个类型并为它们设置属性,并将它们全部保存到数据库中。这里如何新建一个Type模型的对象呢? 还有其他问题,如果这是第一个迁移器,我可以将依赖项留空吗?我用本教程创建的文件 https://docs.djangoproject.com/en/1.8/topics/migrations/#data-migrations将其命名为 0001_initial.py

编辑:已解决,创建这样的模型有效,我的监督。

Type = apps.get_model("core", "Type")
    type = Type()
type.prop = '..'
type.save()

最佳答案

我遵循的模式是从初始迁移开始:

> python manage.py makemigrations

这会创建迁移以构建您的表。

接下来,我为数据创建一个空迁移:

> python manage.py makemigrations --empty core

然后我使用 RunPython 函数使用数据迁移编辑新创建的迁移文件。与此处的其他答案相比,文档中的模式略有不同:

https://docs.djangoproject.com/en/1.11/ref/migration-operations/

def create_types(apps, schema_editor):
    db_alias = schema_editor.connection.alias
    Type = apps.get_model("core", "Type")
    Type.objects.using(db_alias).create(property=value)

class Migration(migrations.Migration):

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

    operations = [
        migrations.RunPython(create_types),
    ]

关于python - 如何在 Django 数据迁移中创建新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35755316/

相关文章:

python - 使用 django 模板创建可读的 html

python - 从数据集中读取二进制值而不删除前导零

django - 无法连接 'str' 和 'tuple' 对象 - Django - johnny 缓存

Django HttpResponseRedirect和reverse()

python - 以 "rock&roll"模式打开文件

python - Django View : working with a file result in indentation error

django - 如何管理django第三方应用丢失的迁移文件?

python - Django 休息 : Show details and list on 1 url

python - gitPython 相对于使用子进程执行 git 命令的优势?

python - Flask with Celery - worker 以 exitcode1 退出