簡體   English   中英

使用OnetoOne關系為Django模型創建工廠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM