在创建同一模型的新字段时,复制现有字段中的值

AlG*_*gio 1 python django

我有django 1.10项目.我有一个模型反馈:

class Feedback(FirstMixin, SecondMixin, models.Model):
    company = models.OneToOneField(
        verbose_name='Company',
        to=Company,
        related_name='feedback'
    )
Run Code Online (Sandbox Code Playgroud)

存在此模型,DB表的列公司由公司项目的键填充.

现在我需要为模型添加一些新字段:

custom_name = models.CharField(
    verbose_name='Company Custom Name',
    null=False,
    max_length=settings.DATABASE_STRING_LENGTH
)
Run Code Online (Sandbox Code Playgroud)

此字段应存储公司的自定义名称.

在迁移过程中,如何使此字段的值与相关公司名称相同?我应该更改迁移的代码还是有一些方法可以在模型中定义它?

NIK*_*ANE 10

是,您要更改已创建的迁移文件.尝试使用以下解决方案

from django.db import migrations, models
from django.db.models import F

def migrate_custome_name(apps, schema_editor):
    Feedback = apps.get_model("app_name","Feedback")
    Feedback.objects.all().update(
        custom_name=F('company'))

class Migration(migrations.Migration):

    dependencies = [
        ------
    ]

    operations = [
        migrations.AddField(
            model_name='feedback',
            name='custom_name',
            -- your code --
        ),
        migrations.RunPython(migrate_custome_name), # Add this function to migrate data
    ]
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你.