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

Python 创建同一模型的新字段时,从现有字段复制值,python,django,Python,Django,我有django 1.10项目。我有一个模型反馈: class Feedback(FirstMixin, SecondMixin, models.Model): company = models.OneToOneField( verbose_name='Company', to=Company, related_name='feedback' ) 此模型存在,DB表的列Company由公司项的键填充 现在,我需要向模型添加一些新字

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

class Feedback(FirstMixin, SecondMixin, models.Model):
    company = models.OneToOneField(
        verbose_name='Company',
        to=Company,
        related_name='feedback'
    )
此模型存在,DB表的列Company由公司项的键填充

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

custom_name = models.CharField(
    verbose_name='Company Custom Name',
    null=False,
    max_length=settings.DATABASE_STRING_LENGTH
)
此字段应存储公司的自定义名称

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

您可以使用数据迁移,请参阅此处的Django文档:。将更改应用于表后,您需要运行设置
Feedback.custom\u name=Feedback.company的操作。

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

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
    ]

希望这将对您有所帮助。

对于大型表,在数据库级别执行此操作可能更有效。e、 g.参加博士后考试