Поле модели клона, созданное с помощью фейдера Django внутри DjangoModelFactory - PullRequest
0 голосов
/ 14 мая 2019

Я использую Django Faker для генерации случайных данных, и он прекрасно работает.

Мне нужно проверить в модели, что два поля responsible и customer в определенной ситуации идентичны.

Вот мой заводской класс:

class FirstQuoteRequest(DjangoModelFactory):

    label = Faker("sentence")
    description = Faker("sentences")
    customer = SubFactory(UserFactory)
    responsible = customer

Набрав responsible = customer, я решил добавить клон потребительской ценности, но в данном случае это клон функции, который возвращает случайное значение, а не то, что я хочу.

Я думал об использовании @post_generation как это:

    @post_generation
    def responsible(self, create: bool, extracted: Sequence[Any], **kwargs):
        self.responsible = self.customer
        self.save()

Но возникает ошибка целостности. Это способ добиться такого баланса между клиентом и ответственным? Какой?

1 Ответ

0 голосов
/ 14 мая 2019

Проблема возникла из-за имени моего метода, которое не должно совпадать с именем поля. Итак, решение:

class FirstQuoteRequest(DjangoModelFactory):

    label = Faker("sentence")
    description = Faker("sentences")
    customer = SubFactory(UserFactory)
    responsible = customer

    @post_generation
    def clone_customer(self, create: bool, extracted: Sequence[Any], **kwargs):
        self.responsible = self.customer
        self.save()

Надеюсь, это поможет!

...