2

ドキュメントに記載されているように、ユーザー/プロファイル パターンで 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にかなり慣れていないためです。正しい方向に私を押し進めるための助けに感謝します.

4

1 に答える 1