循環依存関係factory_boy: 循環依存関係を持つアプリのfactory_boyを使用して、django アプリのフィクスチャを作成しようとしています。
モデル:
from django.db import models
class A(models.Model):
b = models.ForeignKey(B)
class B(models.Model):
c = models.ForeignKey(C)
class C(models.Model):
a = models.ForeignKey(A, null=False)
工場:
# in AFactory
b = SubFactory(BFactory)
# in BFactory
c = SubFactory(CFactory)
# in CFactory
a = CircularSubFactory('a_factory', 'AFactory', b__c__a=None)
これらのファクトリを使用して factory_boy スクリプトを実行すると、ValueError: Cannot assign None: "C.a" does not allow null values
エラーが発生しますが、これは正常なC.a
設定null=False
です。
factory_boy スクリプトをロードしC
、変更C.a
して設定し、実行することはできますか?null=True
いくつかのポイント:
- それが醜いことはわかっていますが、他に選択肢がないようです。ただし、フィクスチャを作成するために内部的にのみ使用されます。
- これらのクラスがコアの一部である既に実行中のアプリであるため、モデルを変更できません。