2013-02-28 87 views
0

我用工厂的男孩,这是我的工厂:如何添加14天的变量值?

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

回答

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属性,还有更多信息here

+0

这是可以做到比这更容易和更清洁。请看看我的回答.... – marianobianchi 2013-03-01 05:05:21

0

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

在你的情况,哟应该从日期时间导入timedelta,并把这个线在你的工厂:

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

欲了解更多信息,可以阅读this