0

我使用工厂男孩,这是我的工厂:

class ConFactory(factory.Factory):
    FACTORY_FOR = Con

    user = factory.SubFactory(UserFactory)
    category = '1'
    number = '12345678'
    time_start = factory.Sequence(lambda n:(datetime.now() + timedelta(days=n)).date(), int)
    time_end = factory.Sequence(lambda n:(datetime.now() + timedelta(days=n+100)).date(), int)
    reminder = datetime.now()

如何设置remindertime_start+ 14 天

reminder=time_start + 14 days

4

2 回答 2

0

如果要根据其他属性值设置属性值,则需要使用Lazy Attributes.

在您的情况下,您应该从 datetime 导入 timedelta 并将此行放入您的工厂:

reminder = factory.LazyAttribute(
    lambda con_factory: con_factory.time_start + timedelta(14)
)

有关更多信息,您可以阅读

于 2013-03-01T05:02:28.337 回答
0
 from datetime import timedelta
 reminder = datetime.now() + timedelta(14)

但是,您不能添加time_start初始化,因此您可以在save()函数中添加一个钩子:

 def save(self, *args, **kwargs):
     if self.time_start:
         self.reminder = self.time_start + timedelta(14)
     super(ConFactory, self).save(*args, **kwargs)

如果您之前没有覆盖model属性,这里有更多信息

于 2013-02-28T16:18:26.047 回答