Python 利用Django迁移来保存一些数据

Python 利用Django迁移来保存一些数据,python,django,django-models,Python,Django,Django Models,我注意到,当您运行Django Migration时,一些数据会在创建新模型时添加到表auth_permission。是否有任何方法可以利用迁移过程对您自己的模型执行相同的操作?我是红色的,但它只涉及创建全新的迁移过程,它没有说明如何为您自己的海豚使用默认迁移过程。您可以编写迁移。像这样运行Python def insert_data(apps, schema_editor): YourModel = apps.get_model('<appname>', '<Mode

我注意到,当您运行Django Migration时,一些数据会在创建新模型时添加到表
auth_permission
。是否有任何方法可以利用迁移过程对您自己的模型执行相同的操作?我是红色的,但它只涉及创建全新的迁移过程,它没有说明如何为您自己的海豚使用默认迁移过程。

您可以编写
迁移。像这样运行Python

def insert_data(apps, schema_editor):
    YourModel = apps.get_model('<appname>', '<ModelName>')
    # now insert data with YourModel.

class Migration(migrations.Migration):

    dependencies = [
        ('<appname>', '<dependency>'),
    ]

    operations = [
        migrations.RunPython(insert_data),
    ]
def插入数据(应用程序、模式编辑器):
YourModel=apps.get_model(“”,“”)
#现在在模型中插入数据。
类迁移(migrations.Migration):
依赖项=[
('', ''),
]
操作=[
RunPython(插入_数据),
]
请注意:

  • 迁移中加载的模型尚未实现方法。例如,当您自定义save方法时,必须在此处编写该代码
  • 如果要使迁移可逆,必须为反向操作编写一个新函数,并将参数
    reverse\u code
    添加到
    RunPython
    行中。您可以使用
    migrations.RunPython.noop
    使反向迁移不起任何作用

您可以编写
迁移。像这样运行Python

def insert_data(apps, schema_editor):
    YourModel = apps.get_model('<appname>', '<ModelName>')
    # now insert data with YourModel.

class Migration(migrations.Migration):

    dependencies = [
        ('<appname>', '<dependency>'),
    ]

    operations = [
        migrations.RunPython(insert_data),
    ]
def插入数据(应用程序、模式编辑器):
YourModel=apps.get_model(“”,“”)
#现在在模型中插入数据。
类迁移(migrations.Migration):
依赖项=[
('', ''),
]
操作=[
RunPython(插入_数据),
]
请注意:

  • 迁移中加载的模型尚未实现方法。例如,当您自定义save方法时,必须在此处编写该代码
  • 如果要使迁移可逆,必须为反向操作编写一个新函数,并将参数
    reverse\u code
    添加到
    RunPython
    行中。您可以使用
    migrations.RunPython.noop
    使反向迁移不起任何作用

感谢您抽出时间回答我的问题。我实现了你的建议,但我从未执行过代码。我运行makemigrations和migrate,但从未访问过代码。我要怎么做才能执行它?应该在何时执行,何时进行迁移还是何时迁移?这些代码必须位于应用程序的迁移文件夹中。不需要
makemigration
。文件名必须以递增顺序的四位数字开头。您必须向应用程序中的上一次迁移添加依赖项。您可以使用命令
python manage.py makemigration myapp--empty
生成迁移,然后将代码插入到itOk中,明白了吗。对于我的情况来说,这并不是正确的解决方案,但我将这种方法应用于其他情况。非常感谢@vorujack感谢您抽出时间回答我的问题。我实现了你的建议,但我从未执行过代码。我运行makemigrations和migrate,但从未访问过代码。我要怎么做才能执行它?应该在何时执行,何时进行迁移还是何时迁移?这些代码必须位于应用程序的迁移文件夹中。不需要
makemigration
。文件名必须以递增顺序的四位数字开头。您必须向应用程序中的上一次迁移添加依赖项。您可以使用命令
python manage.py makemigration myapp--empty
生成迁移,然后将代码插入到itOk中,明白了吗。对于我的情况来说,这并不是正确的解决方案,但我将这种方法应用于其他情况。非常感谢@vorujack