При определении ModelFactory в FactoryBoy мне нужно получить доступ к атрибуту другой модели, созданной SubFactory, и назначить его этому атрибуту ModelFactory.
Вот что я хочу сделать:
import factory
class MyModelFactory(factory.DjangoModelFactory):
FACTORY_FOR = MyModel
created_by = factory.SubFactory(AdminUserFactory)**.id**
Очевидно, что это не работает, потому что нет объекта AdminUser для доступа к идентификатору в определении класса MyModelFactory.
Вот что я сделал, но это уродливо:
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, но не смог увидеть класс или функцию, которая позволила бы мне лениво получить доступ к атрибуту. У кого-нибудь есть предложения?