Поставщик даты Factory Boy возвращает строку - PullRequest
1 голос
/ 17 января 2020

Итак, я работаю в каком-то приложении, использующем пакет factory_boy для генерации случайных данных, и мне не хватает поставщика данных: (

class MyModel(models.Model):
    date = models.DateField()

class MyModelFactory(factory.DjangoModelFactory):
    date = factory.Faker('date')

    class Meta:
        model = MyModel

my_model = MyModelFactory()
my_model.date # '2010-05-20'

Кто-то знает, как я могу сделать фейкер вернуть объект с реальной датой?

Ответы [ 3 ]

1 голос
/ 17 января 2020

Поставщик date возвращает строку, а не объект date. Вам нужно использовать date_object провайдера вместо:

class MyModelFactory(factory.DjangoModelFactory):
    date = factory.Faker('date_object')
1 голос
/ 17 января 2020

Вы можете использовать Faker('date_object') или - для большего контроля - factory.fuzzy.FuzzyDate помощник :

class MyModelFacotry(factory.django.DjangoModelFactory):
    # Start somewhere in 2018
    start_date = factory.fuzzy.FuzzyDate(
        datetime.date(2018, 1, 1),
        datetime.date(2019, 12, 31),
    )
0 голосов
/ 17 января 2020

Просто конвертируйте его в дату, как только вы ее получите.

date = datetime.strptime(factory.Faker('date'), "%b-%d-%y")
...