Skip to main content
 首页 » 编程设计

python之创建相同模型的新字段时从现有字段复制值

2025年05月04日11zhujiabin

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

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

此模型存在,数据库表的公司列由公司项目的键填充。

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

custom_name = models.CharField( 
    verbose_name='Company Custom Name', 
    null=False, 
    max_length=settings.DATABASE_STRING_LENGTH 
) 

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

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

请您参考如下方法:

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

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 
    ] 

希望对您有所帮助。