如何解决Factory Boy SelfAttribute 没有返回我所期望的
class Client(TimeStampedModel):
user = models.OnetoOneField(User,related_name="client",on_delete=models.CASCADE)
business_name = models.CharField(_("business name"),max_length=255,blank=True)
business_phone = PhoneNumberField(_("business phone"),blank=True,null=True)
business_address = models.CharField(
_("business address"),blank=True
)
business_city = models.CharField(_("business city"),blank=True)
business_state = UsstateField(_("business state"),blank=True)
business_zip = USZipCodeField(_("business zip"),blank=True)
business_url = models.URLField(_("business website"),blank=True)
@property
def email(self):
return self.user.email
def __str__(self):
return f"{self.business_name}"
导致问题的是电子邮件属性。它应该返回用户的电子邮件地址。使用 DjangoModelFactory
,我使用以下两个工厂创建用户和客户端:
class UserFactory(DjangoModelFactory):
class Meta:
model = get_user_model()
django_get_or_create = ["username"]
username = Faker("user_name")
email = Faker("email")
phone_number = Faker("phone_number")
first_name = Faker("first_name")
last_name = Faker("last_name")
city = Faker("city")
state = Faker("state_abbr")
zip = Faker("zipcode_plus4")
# these are overrideable
password = "fakePassword"
is_staff = False
@classmethod
def _create(cls,model_class,*args,**kwargs):
"""Override ``_create``"""
kwargs["password"] = make_password(kwargs["password"])
kwargs["is_staff"] = kwargs["is_staff"]
return super(UserFactory,cls)._create(model_class,**kwargs)
class ClientFactory(DjangoModelFactory):
class Meta:
model = Client
user = factory.SubFactory(
UserFactory,)
business_name = Faker("company")
business_address = Faker("street_address")
business_city = Faker("city")
business_state = Faker("state_abbr")
business_zip = Faker("postalcode")
email = factory.SelfAttribute("user.email")
我在运行测试时不断收到错误 Invalid field name(s) for model Client: 'email'.
。我也尝试将它作为一个惰性属性来处理,但我得到了同样的错误。我在这里做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。