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()

+14日reminderの設定方法time_start

reminder=time_start + 14 days

4

2 に答える 2

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 に答える
0

他の属性値に基づいて属性値を設定する場合は、 を使用する必要がありますLazy Attributes

あなたの場合、datetime から timedelta をインポートし、この行をファクトリに配置する必要があります。

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

詳細については、これを読むことができます

于 2013-03-01T05:02:28.337 に答える