Стратегия "создания" FactoryBoy, похоже, не спасает модель Джанго
Возможно, глупый вопрос, но я уже некоторое время стучу головой о стену. Я решил попробовать библиотеку factory-boy, чтобы упростить мои тесты, и определил фабрику:
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"
Тем не менее, когда я делаю QualtricsSurveyCacheFactory.create()
возвращает модель с id = None
>>> survey = QualtricsSurveyCacheFactory()
>>> print survey.id
None
Я могу .save()
Модель после создания, но просто любопытно, почему он не делает это автоматически.
1 ответ
Решение
Вы не использовали правильный базовый класс для моделей Django. Унаследуйте вместо этого от:
class QualtricsSurveyCacheFactory(factory.DjangoModelFactory):
...
Затем, QualtricsSurveyCacheFactory()
вернет сохраненный экземпляр с первичным ключом. использование QualtricsSurveyCacheFactory.build()
если вы хотите несохраненный экземпляр.