Django ModelManager заставляет DjangoModelFactory возвращать None
<class ScheduledCourse(models.Model):
"""Represents a scheduled course that is/was bound to be held."""
class ScheduledCourseManager(models.Manager):
def create(self, *args, **kwargs):
if not (template := kwargs.get("template")):
raise ValueError("Template can not be empty")
# If user did not specifiy values for these parameters, use the ones in the template
for key in ["title", "description", "price"]:
if not kwargs.get(key):
kwargs.update({key: getattr(template, key)})
super().create(*args, **kwargs)
У меня есть объект django.Model, который должен выполнять некоторую обработку параметров при инициализации. Поэтому внутри него я создал ModelManager, как предлагает документация.
Это работает нормально, я протестировал это и могу создавать объекты с помощью вызова ScheduledCourse(...). Однако когда я попытался создать фабрику для этого объекта, чтобы использовать ее в своих тестах, то фабрика возвращает None, без какой-либо ошибки.
class ScheduledCourseFactory(factory.django.DjangoModelFactory):
class Meta:
model = ScheduledCourse
template = factory.SubFactory(CourseTemplateFactory)
title = "Test title"
description = "Test description"
price = 1234.0
start_date = datetime.today()
end_date = datetime.today() + timedelta(days=1)
signup_deadline = datetime.today() - timedelta(days=1)
venue = "Test Venue"
status = ScheduledCourse.Status.DRAFT
Какова причина того, что моя фабрика не возвращает ничего?
Это смешно, но мне не хватало ключевого слова return в конце метода create.