Эта проблема: https://github.com/FactoryBoy/factory_boy/issues/102 описывает, как вам следует протестировать «созданное» поле в django.
Как это следует реализовать для auto_add (вместо auto_add_now)?У меня есть «обновленное» поле, но использую ли я
models.DateTimeField(auto_now=True)
или переопределяю метод django .save () модели
def save(self, *args, **kwargs):
"""On save, update updated timestamp"""
self.updated = timezone.now
return super(Task, self).save(*args, **kwargs)
Я не могу заставить FactoryBoy возвращатьзначение updated, которое я хочу - он всегда возвращает timezone.now ()
LazyAttribute(lambda o: o.created + timedelta(hours=1)) # ignored by auto_add
или использует метод _create (), как предлагается в выпуске GitHub:
@classmethod
def _create(cls, target_class, *args, **kwargs)
updated = kwargs.pop('updated', None)
obj = super(TaskFactory, cls)._create(target_class, *args, **kwargs)
if updated is not None:
obj.updated = updated
obj.save() # <-- calls .save() method overriding with timezone.now()
return obj
Что такоелучший способ пойти сюда?