Есть ли способ использовать временную неполевую переменную в factoryboy?

Я определяю некоторые фабрики для тестирования моего магазина электронной коммерции. Я создал провайдера Faker, который может вернуть, например, словарь, содержащий все данные для случайного товара.

Затем я хочу использовать этот словарь для заполнения полей в моей фабрике. Это происходит потому, что данные в словаре являются согласованными. Я не хочу создавать фабрику с данными, которые не являются связными, например, продукт с именем: "Футболка с коротким рукавом" и описанием: "Красивая, удобная обувь". Есть ли способ реализовать что-то похожее на

class ProductFactory(factory.django.DjangoModelFactory):
    temporary_product_dict = fake.product_dict_from_provider()
    
    name = temporary_product_dict["name"]
    description = temporary_product_dict["description"]
    category = temporary_product_dict["category"]
    ...

    class Meta:
        model = models.Product

Когда я делаю именно это, я получаю ошибку, которая говорит мне, что temporary_product_dict не является атрибутом модели Product.

Я использовал class Params следующим образом:

class OptionTypeFactory(factory.django.DjangoModelFactory):
    """OptionType model factory."""

    class Meta:
        model = OptionType

    class Params:
        # Obtain coherent data for an option type from provider
        option_type = fake.product_option_type()

    name = Params.option_type["name"]
    display_name = Params.option_type["display_name"]
    index = Params.option_type["index"]
    created = datetime.datetime.strptime(
        Params.option_type["created"], "%Y-%m-%d %H:%M:%S"
    )
    updated = datetime.datetime.strptime(
        Params.option_type["updated"], "%Y-%m-%d %H:%M:%S"
    )


register(OptionTypeFactory)
Вернуться на верх