[英]Creating factories for Django models with OnetoOne relationships
我正在嘗試為具有OneToOne關系的Django模型設置許多工廠,並且它們的行為似乎與外鍵的行為不同。
當運行我的單元測試時,主模型沒有設置它的關系。
我的模特:
class ThePlan(models.Model):
user = models.ForeignKey("User")
creationdate = models.DateField(auto_now_add=True)
class OldPlan(models.Model):
plan = models.OneToOneField("ThePlan")
theplan = CharField(max_length = 200,)
class NewPlan(models.Model):
plan = models.OneToOneField("ThePlan")
theplan = CharField(max_length = 200,)
我的工廠:
class ThePlanFactory(factory.DjangoModelFactory):
FACTORY_FOR = "mysite.PlanModel"
user = factory.SubFactory(UserFactory)
class OldPlanFactory(factory.DjangoModelFactory):
FACTORY_FOR = "mysite.OldModel"
plan = factory.RelatedFactory(ThePlanFactory)
theplan = ''
class NewPlanFactory(factory.DjangoModelFactory):
FACTORY_FOR = "mysite.NewModel"
plan = factory.RelatedFactory(ThePlanFactory)
theplan = ''
在我的測試setUp()
我正在執行以下操作;
def setUp(self):
self.user = factories.UserFactory.create()
self.plan = factories.ThePlanFactory.create(
user=self.user
)
self.oldplan = factories.OldPlanFactory.create(
plan=self.plan
)
self.newplan = factories.NewPlanFactory.create(
plan=self.plan
)
因此,當我使用其中的一項進行測試時,我得到的是DoesNotExist: ThePlan has no OldPlan
。
我在哪里錯了? 我是立即打電話給create
,而是應該使用build
設置工廠,設置關系,然后調用save
嗎?
因此,我的問題與時間和2個依賴工廠的創建有關。
我沒有立即調用它們,而是設置了plan
關系后立即設置它們並保存對象。 我需要以下工作;
def setUp(self):
self.user = factories.UserFactory.create()
self.plan = factories.ThePlanFactory.create(
user=self.user
)
self.oldplan = factories.OldPlanFactory()
self.oldplan.plan = self.plan
self.oldplan.save()
self.newplan = factories.NewPlanFactory()
self.newplan.plan = self.plan
self.newplan.save()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.