Python 创建同一模型的新字段时,从现有字段复制值
我有django 1.10项目。我有一个模型反馈: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由公司项的键填充 现在,我需要向模型添加一些新字
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.参加博士后考试