Передача значения признака в SubFactory Django - PullRequest
1 голос
/ 26 апреля 2020

У меня есть две фабрики.

class DispatchDataFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = models.DispatchData

    order = factory.SelfAttribute('order_data.order')
    sku = factory.LazyAttribute(lambda obj: '%d' % obj.order_data.sku)
    category = SKUCategory.SINGLE
    quantity = 50

    class Params:
        combo_sku=False
        order_data = factory.SubFactory(OrderDataFactory, combo_sku=factory.SelfAttribute('combo_sku'))
        combo_sku = factory.Trait(
            sku=factory.LazyAttribute(lambda obj: '%d' % obj.order_data.sku),
            category=SKUCategory.COMBO,
            quantity=1
        )
class OrderDataFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = models.OrderData

    order = factory.SubFactory(OrderFactory)
    category = SKUCategory.SINGLE
    quantity = 75.6
    price_per_kg = 10.5
    sku = factory.SelfAttribute('crop_data.id')

    class Params:
        crop_data = factory.SubFactory(CropFactory)
        combo_data = factory.SubFactory(ComboSkuFactory)
        combo_sku = factory.Trait(
            sku=factory.SelfAttribute('combo_data.id'),
            category=SKUCategory.COMBO,
            quantity=1,
            price_per_kg=34.56
        )

, поэтому, если combo_sku имеет значение True, он должен указывать на combo_sku в OrderDataFactory.

Я получаю следующую ошибку.

Cycli c ленивое определение атрибута для 'combo_sku'; цикл найден в ['category', 'combo_sku']

Есть ли другой способ передать значение признака в SubFactory.

1 Ответ

0 голосов
/ 26 апреля 2020

Я добавил значение по умолчанию для первой фабрики, и оно работает нормально.

combo_sku = False

    class Params:
        order_data = factory.SubFactory(
            OrderDataFactory, combo_sku=factory.SelfAttribute('..combo_sku'))
...