2017-06-05 15 views
0

私は問題を抱えている私は、フィールド内のすべてのオブジェクトderived_to値1に割り当てエラーのためによくForeignKeyDjango - 列のすべての値をnullに変更するにはどうすればよいですか?

に変更されなければならなかった整数フィールドを持っていたので、私は、私のモデルにいくつかの変更を行います。

これで、この列のすべての行をnullとしてマークしたいと考えています。どうしたらいいですか?これらは私の最後の二つの移行

class Migration(migrations.Migration): 

    dependencies = [ 
     ('work_order', '0026_auto_20170603_1517'), 
    ] 

    operations = [ 
     migrations.AlterModelOptions(
      name='workorder', 
      options={'verbose_name': 'work order', 'verbose_name_plural': 'work orders'}, 
     ), 
     migrations.AlterField(
      model_name='workorder', 
      name='derived_to', 
      field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='store.OutsourceOption', verbose_name='outsource'), 
     preserve_default=False, 
    ), 
] 

そして最後の1

class Migration(migrations.Migration): 

    dependencies = [ 
     ('work_order', '0027_auto_20170605_0836'), 
    ] 

    operations = [ 
     migrations.AlterField(
      model_name='workorder', 
      name='derived_to', 
      field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='store.OutsourceOption', verbose_name='outsource'), 
     ), 
    ] 

まあ、私はので、今、列derived_toでwork_order内のすべてのオブジェクトにnullを割り当てるための新しい移行を行うために必要なすべてのthatsですすべてのオブジェクトがOutsourceOptionsの最初のレジスタを指しているderived_toを持っていて、それが正しくありません。

私の悪い英語をありがとうと申し訳ありません。

答えて

1

あなたが正しく理解している場合は、既存のderived_toの値をすべてnullに設定しますか?あなたはそれを行うことができますRunPython

歴史的なコンテキストでカスタムPythonコードを実行します。コード(および reverse_codeが指定されている場合)は、2つの 引数を受け入れる呼び出し可能オブジェクトである必要があります。

def forwards_func(apps, schema_editor): 

    Workorder = apps.get_model('appname','Workorder') 
    Workorder.objects.update(derived_to=None) 

このような移行にこれを追加します。

operations = [ 
    migrations.AlterField(
     model_name='workorder', 
     name='derived_to', 
     field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='store.OutsourceOption', verbose_name='outsource'), 
    ), 
    migrations.RunPython(forwards_func), 
] 
完璧な作品
+0

!おかげです。 – marcosgue

+0

助けてくれてうれしいです。あなたのプロジェクトでは最高のものです。 – e4c5

関連する問題