Я использую 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()
Но это вызывает ошибку целостности. Это способ уравнять клиента и ответственного? Который из?






Проблема возникла из-за имени моего метода, которое не должно совпадать с именем поля. Итак, решение:
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()
Надеюсь, поможет!