- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
上下文:我有一个有两个日期的模型,我想对它们都使用 factory.Faker
但第二个日期应该总是大于第一个日期。
我试过这个:
模型摘录:
class Event(models.Model):
execution_start_date = models.DateTimeField()
execution_end_date = models.DateTimeField()
工厂:
class EventFactory(factory.DjangoModelFactory):
class Meta:
model = Event
strategy = factory.BUILD_STRATEGY
execution_start_date = factory.Faker('date_time_this_year', tzinfo=pytz.utc)
@factory.lazy_attribute
def execution_end_date(self):
return factory.Faker('date_time_between_dates',
datetime_start=self.execution_start_date,
datetime_end=now(),
tzinfo=pytz.utc)
但是当我尝试从 python shell 使用工厂时,我得到了这个:
In [3]: e = EventFactory()
In [4]: e.execution_end_date
Out[4]: <factory.faker.Faker at 0x1103f51d0>
我设法让它工作的唯一方法是这样的:
@factory.lazy_attribute
def execution_end_date(self):
# return factory.Faker('date_time_between_dates',
# datetime_start=self.execution_start_date,
# datetime_end=now(),
# tzinfo=pytz.utc)
faker = factory.Faker._get_faker()
return faker.date_time_between_dates(datetime_start=self.execution_start_date,
datetime_end=now(),
tzinfo=pytz.utc)
但老实说,我认为有更好的方法。
我的依赖项是:
最佳答案
当 lazy_attribute 发挥作用时,您已经生成了对象。因此,您可以像这样使用 random 和 timedelta:
@factory.lazy_attribute
def execution_end_date(self):
max_days = (now() - self.execution_start_date).days
return self.execution_start_date + timedelta(random.randint(1, max_days))
或其他生成随机日期的方法。坚持 factory_boy.Faker 没有意义
编辑
在我的第一个答案之后,我设法找到了一种方法来做你想做的事,这真的很简单。你只需要用来自 Faker 的空字典调用 generate() 方法:
@factory.lazy_attribute
def execution_end_date(self):
return factory.Faker('date_time_between_dates',
datetime_start=self.execution_start_date,
datetime_end=now(),
tzinfo=pytz.utc).generate({})
关于python - 如何在 Factory Boy 中使用 lazy_attribute 和 Faker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45068596/
我正在尝试使用 Factoryboy 在创建时指定长度的对象中创建列表。 我可以创建列表,但是由于提供的长度/大小的惰性,每次尝试创建具有指定长度的列表都会导致问题。 这是我到目前为止: class
我正在使用 django 1.6 和factory-boy。 class UserFactory(factory.Factory): class Meta: model = mode
所以,我一直在使用factory_boy包在一些应用程序中生成一些随机数据,并且我正在遭受日期提供程序的困扰:( class MyModel(models.Model): date = mod
假设您以这种方式关联这些 Django 模型: class Service: restaurant = models.ForeignKey(Restaurant) hist_day_per
我正在使用带有 SQLAlchemy 的 factory boy。 我正在尝试创建 Fact 对象,我希望工厂男孩生成作为 Fact 外键的 PatientDim 对象。但是 Subfactory 不
作为工作的一部分,我一直在回答 this question about the technical workings of a glitch in Pokémon Red ,我一直在寻找一种使用标准调
我正在阅读有关创建Game Boy仿真器的教程,我了解Game Boy使用8位CPU,但是我不明白为什么Gameboy使用两种类型的数据:字节(8位)和字(16位) 。 如果CPU的容量为8位,为什么
我试图让我的用户回答“你是男孩还是女孩?”的问题。与这两个选择之一,并迫使他们选择其中之一。 我认为我正朝着正确的方向前进,但每当我运行代码时,如果选择第二个选项,就会出现问题。 我做错了什么? va
谁能解释一下 Man Or Boy Test返回值 -67? 我徒劳地尝试写下结果,或者用调试器跟踪它。任何帮助将不胜感激。 可以找到不同实现的列表 here . 最佳答案 This is a nic
当 Django 模型中的字段具有选项选项时,请参阅 Django choices field option ,它利用包含 2 个项目的可迭代对象的可迭代对象来定义允许哪些值。例如: 模型 class
我正在学习 django 测试,我发现 django factory boy library 对编写测试用例非常有帮助,但有一件事我没有得到.. 例如我的工厂名称之一是 BlogFactory 所以我
问题 我正在使用模型类 Event包含一个可选的 ManyToManyField 到另一个模型类,User (不同的事件可以有不同的用户),有一个工厂类EventFactory (使用 Factory
在the Game Boy CPU Manual的第87页据称,CP n指令在没有借位时设置进位标志,这意味着 A n 时设置了进位标志。 . 一个例子:如果A=0和 B=1 , CP B设置标志,
我是 FactoryBoy 的新手。我正在尝试文档中确切示例的示例:reverse dependencies . 1)所提到的“UserLogFactory”“如此明显”是否正确,应该像这样自己做:
我的模型中有一个字段为 JSONField 类型(MYSQL 实现)。我想使用 FactoryBoy Faker 伪造该字段的数据。 我怎样才能做到这一点? 最佳答案 您可以通过创建一个返回 dict
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我显然是个笨蛋,我会在一开始就承认这一点。我正在使用以下工厂 class DataSheetFactory(factory.DjangoModelFactory): class Meta:
我有一个模型 Profile,它有一个与 User 一对一的字段: from django.db import models class Profile(models.Model): user
这是 Man or boy测试方案代码: (define (A k x1 x2 x3 x4 x5) (define (B) (set! k (- k 1)) (A k B x1 x
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我是一名优秀的程序员,十分优秀!