查看以 Django 中其他列为条件的新列
View new column conditioned on other columns in Django
对于 Django 1.11,我正在尝试添加一个以其他列为条件的新列(如下图所示)并在前端查看它。这个 link 是最接近的例子,但我想在 Django 中实现它。我们该怎么做?
我建议对迁移文件执行此操作:
更改模型后,执行./manage.py makemigrations
在编辑器中打开新的迁移文件,该文件的内容可能类似如下:
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [('migrations', '0001_initial')]
operations = [
migrations.AddField('MyModel', 'A_islargerthan_B', models.BooleanField(default=False)),
]
现在您必须使用 migrations.RunPython
注入更新代码:
from django.db import migrations, models
def update_A_islargerthan_B(apps, schema_editor):
MyModel = apps.get_model('my_app', 'MyModel')
for obj in MyModel.objects.all():
obj.A_islargerthan_B = obj.column_A > obj.column_B
obj.save()
class Migration(migrations.Migration):
dependencies = [('migrations', '0001_initial')]
operations = [
migrations.AddField('MyModel', 'A_islargerthan_B', models.BooleanField(default=False)),
migrations.RunPython(update_A_islargerthan_B),
]
运行 ./manage.py migrate
阅读更多关于 Django migrations
对于 Django 1.11,我正在尝试添加一个以其他列为条件的新列(如下图所示)并在前端查看它。这个 link 是最接近的例子,但我想在 Django 中实现它。我们该怎么做?
我建议对迁移文件执行此操作:
更改模型后,执行
./manage.py makemigrations
在编辑器中打开新的迁移文件,该文件的内容可能类似如下:
from django.db import migrations, models class Migration(migrations.Migration): dependencies = [('migrations', '0001_initial')] operations = [ migrations.AddField('MyModel', 'A_islargerthan_B', models.BooleanField(default=False)), ]
现在您必须使用
migrations.RunPython
注入更新代码:from django.db import migrations, models def update_A_islargerthan_B(apps, schema_editor): MyModel = apps.get_model('my_app', 'MyModel') for obj in MyModel.objects.all(): obj.A_islargerthan_B = obj.column_A > obj.column_B obj.save() class Migration(migrations.Migration): dependencies = [('migrations', '0001_initial')] operations = [ migrations.AddField('MyModel', 'A_islargerthan_B', models.BooleanField(default=False)), migrations.RunPython(update_A_islargerthan_B), ]
运行
./manage.py migrate
阅读更多关于 Django migrations