【问题标题】:Django, Factory boy - can't create subfactoryDjango,工厂男孩 - 无法创建子工厂
【发布时间】:2021-10-13 14:54:57
【问题描述】:

我创建了三个工厂,其中 User 和 Profile 关联为 onetoone 字段,Label 也是 Profile 的子工厂。

import factory
from users.models import User, Label, Profile
from .models import Release
import random
from django.db.models.signals import post_save


@factory.django.mute_signals(post_save)
class ProfileFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Profile

    user = factory.SubFactory("releases.factories.UserFactory", profile=None)


@factory.django.mute_signals(post_save)
class UserFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = User

    email = factory.Faker("email")
    password = factory.Faker("password")

    profile = factory.RelatedFactory(ProfileFactory, factory_related_name='user')


class LabelFactory(factory.django.DjangoModelFactory):
    profile = factory.SubFactory(ProfileFactory)
    name = factory.Faker("name")

    class Meta:
        model = Label

但是当我尝试创建标签 (LabelFactory.create()) 时会抛出错误

RelatedObjectDoesNotExist: User has no profile.

怎么了?请帮忙!

【问题讨论】:

标签: django django-testing factory-boy


【解决方案1】:

我已经解决了问题 要先创建标签,您需要创建个人资料

profile = ProfileFactory.create()

然后创建一个这样的标签

label = LabelFactory(profile=profile)

如果你想创建一个两者都相关的工厂

release = ReleaseFactory(profile=profile, label=label)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2019-06-29
    • 2020-08-20
    • 1970-01-01
    相关资源
    最近更新 更多