ドキュメントに記載されているように、ユーザー/プロファイル パターンで FactoryBoy を使用したいと考えています。
class ProfileFactory(DjangoModelFactory):
class Meta:
model = Profile
first_name = lazy_attribute(lambda o: faker.first_name())
user = SubFactory('profiles.tests.factories.UserFactory', profile=None)
class UserFactory(DjangoModelFactory):
class Meta:
model = settings.AUTH_USER_MODEL
username = lazy_attribute(lambda o: faker.first_name())
profile = RelatedFactory(ProfileFactory, 'user')
今、次のようなユーザー名のみを提供してユーザーを作成できるようにしたいと思います
u = UserFactory(username='alice')
='Alice'
プロファイルの first_name ( ) としてユーザー名を自動的に取得します。
または first_name のような
u = UserFactory(profile__first_name='Bob')
='bob'
指定された first_name に従って設定されたユーザー名 ( ) を取得します
または、私が気まぐれな場合は、username と first_name の両方を提供し、もちろん両方を保持します
u = UserFactory(username='alice', profile__first_name='Bob')
これまでのところ、この動作を実装する適切な場所が見つかりませんでした。をオーバーライドしようとし_generate()
ましたが、遅延属性がこの時点で既に起動しているため、これは適切な場所ではないことがわかりました。また、私はオーバーライドすることができませんでした__call__()
または__new__()
私のUserFactory
.
多分これはすべて、私がPythonにかなり慣れていないためです。正しい方向に私を押し進めるための助けに感謝します.