Заводское создание объекта с несколькими значениями по умолчанию (обратный внешний ключ)

Я использую django 3.2 и factory boy 3.2.1 и пытаюсь создать фабрику модели плагина, которая автоматически создает 2 подходящих элемента конфигурации с ним:

class PluginConfiguration(Configuration):
plugin = models.ForeignKey(
    ProductPlugin,
    null=False,
    blank=False,
    on_delete=models.CASCADE,
    related_name="configurations",
)

key = models.CharField(max_length=100,)
value = models.CharField(max_length=255,)
category = models.PositiveIntegerField(choices=Category.choices, default=Category.GENERAL,)


class PluginConfigurationFactory(factory.django.DjangoModelFactory):
class Meta:
    model = PluginConfiguration

plugin = factory.SubFactory(ProductPluginFactory)
key = factory.fuzzy.FuzzyText(length=20)
value = factory.fuzzy.FuzzyText(length=20)
category = PluginConfiguration.Category.GENERAL


class ProductPluginFactory(factory.django.DjangoModelFactory):
class Meta:
    model = ProductPlugin

name = "MyPlugin"
type = ProductPlugin.Type.APP
password_required = False

@factory.post_generation
def configurations(obj, create, extracted, **kwargs):
    if not create:
        return

    if extracted:
        for n in range(extracted):
            PluginConfigurationFactory(plugin=obj)
    else:
        PluginConfigurationFactory(
            plugin=obj,
            key="base_name",
            value="cobra",
            category=PluginConfiguration.Category.GENERAL,
        )

        PluginConfigurationFactory(
            plugin=obj,
            key="appId",
            value="MyApp",
            category=PluginConfiguration.Category.GENERAL,
        )

Extracted в этом случае должен просто создать определенное количество элементов конфигурации. Проблема в том, что если я пытаюсь обратиться к plugin.configurations.all(), то получаю сообщение об ошибке

>       configs = plugin.configurations.all()
E       AttributeError: 'PostGeneration' object has no attribute 'all'

Фабрика называется так

    plugin = ProductPluginFactory()
    configs = plugin.configurations.all()

Поскольку это не простой атрибут, а отношение (RelationManager), ошибка верна, но как мне тогда сделать то, что я хочу?

Спасибо и пожелания Matt

Вернуться на верх