Необязательное (обнуляемое) значение для Factory от factory-boy - PullRequest
0 голосов
/ 31 марта 2020

Я использую lazy_attribute и choice с None, но я думаю, что можно сделать это лучше.

import factory  # from factory-boy
from random import choice


class Device(models.Model):
    deleted_at = models.DateTimeField(null=True, blank=True)


class DeviceFactory(factory.DjangoModelFactory):
    class Meta:
        model = Device

    @factory.lazy_attribute
    def deleted_at(self):
        return choice([Faker('date_time').generate(), None])

1 Ответ

1 голос
/ 21 апреля 2020

factory-boy имеет Может быть объявление для полей, допускающих обнуляемость. Самый простой способ использовать его здесь - создать промежуточное поле, а затем исключить промежуточное:

class DeviceFactory(factory.DjangoModelFactory):
    class Meta:
        model = Device
        exclude = ('is_deleted',)

    is_deleted = factory.Faker('pybool')
    deleted_at = factory.Maybe('is_deleted', Faker('date_time'), None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...