FactoryBoy"创造"策略似乎并没有保存django模型

Ale*_*kov 3 django factory-boy qualtrics

可能是一个愚蠢的问题,但我现在已经把头撞到墙上一段时间了.我决定尝试工厂男孩库来简化我的测试并定义一个工厂:

from . import models
import factory

class QualtricsSurveyCacheFactory(factory.Factory):
class Meta:
    model = models.QualtricsSurveyCache

survey_id = "SR_1234"
qualtrics_username = "bla@blah.bla#bla"
survey_name = "fake"
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时QualtricsSurveyCacheFactory.create(),返回id = None的模型

>>> survey = QualtricsSurveyCacheFactory()
>>> print survey.id
None
Run Code Online (Sandbox Code Playgroud)

我可以.save()在创建后进行建模,但只是好奇为什么它不能自动完成.

wim*_*wim 6

您没有为Django模型使用正确的基类.继承而不是:

class QualtricsSurveyCacheFactory(factory.DjangoModelFactory):    
    ...
Run Code Online (Sandbox Code Playgroud)

然后,QualtricsSurveyCacheFactory()将返回带有主键的已保存实例.QualtricsSurveyCacheFactory.build()如果需要未保存的实例,请使用.