FactoryBoy で ModelFactory を定義する際に、SubFactory によって作成された別のモデルの属性にアクセスし、それをこの ModelFactory の属性に割り当てる必要があります。
これは私がやりたいことです:
import factory
class MyModelFactory(factory.DjangoModelFactory):
FACTORY_FOR = MyModel
created_by = factory.SubFactory(AdminUserFactory)**.id**
MyModelFactory クラス定義の id にアクセスするための AdminUser オブジェクトがないため、明らかに機能しません。
これは私がやったことですが、醜いです:
import factory
class MyModelFactory(factory.DjangoModelFactory):
FACTORY_FOR = MyModel
dummy_created_by = factory.SubFactory(AdminUserFactory)
created_by = factory.LazyAttribute(lambda o: o.dummy_created_by.id)
@classmethod
def _create(cls, target_class, *args, **kwargs):
del kwargs['dummy_created_by']
return super(MyModelFactory, cls)._created(
target_class, *args, **kwargs)
Factory_Boyのドキュメントを読み込もうとしましたが、属性に遅延アクセスできるクラスまたは関数が見つかりませんでした。誰にも提案はありますか?