【问题标题】:View new column conditioned on other columns in Django查看以 Django 中其他列为条件的新列
【发布时间】:2018-05-05 03:17:55
【问题描述】:

使用 Django 1.11,我正在尝试添加一个以其他列为条件的新列(如下图所示)并在前端查看它。这个link 是最接近的例子,但我想在 Django 中实现它。我们该怎么做?

【问题讨论】:

    标签: python django django-migrations


    【解决方案1】:

    我建议对迁移文件执行此操作:

    1. 更改模型后,执行./manage.py makemigrations

    2. 在编辑器中打开新的迁移文件,该文件的内容可能类似如下:

      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)),
          ]
      
    3. 现在您必须使用 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),
          ]
      
    4. 运行./manage.py migrate

    阅读更多关于Django migrations

    【讨论】:

    • 从来没有过这种方法。有用。感谢您的帮助。
    • @Fxs7576 我很高兴你的问题得到了回答。
    猜你喜欢
    • 2012-08-24
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2023-01-08
    相关资源
    最近更新 更多