Нельзя создать из класса FactoryBoy

Я пытаюсь создать класс и сделать несколько экземпляров, но я не могу создать ни одного экземпляра с классом в моей оболочке django shell

factories.py

import factory
from webshare.models import WebShareFileFolders


class WebShareFileFactoryBoy(factory.django.DjangoModelFactory):
    class Meta:
        model = WebShareFileFolders

    inode = factory.Sequence(lambda n: n)
    name = factory.Faker('name')
    path = factory.Faker('text', max_nb_chars=50)
    is_dir = factory.Faker('boolean')

и затем ошибка в моей консоли

>>> from webshare.tests.factories import WebShareFileFactoryBoy

>>> instance = WebShareFileFactoryBoy()
Traceback (most recent call last):
  File "C:\Python37\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
TypeError: 'module' object is not callable

>>> instance = WebShareFileFactoryBoy.create()
Traceback (most recent call last):
  File "C:\Python37\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
AttributeError: module 'webshare.tests.factories.WebShareFileFactoryBoy' has no attribute 'create'

Спасибо за помощь ;)

Python 3.7.9 factory-boy 3.3.0

Я просто пытаюсь создать экземпляр из фабричного класса

Используйте приведенный ниже код.


import factory
from ...webshare.models import WebShareFileFolders


class WebShareFileFactoryBoy(factory.django.DjangoModelFactory):
    class Meta:
        model = WebShareFileFolders

    inode = factory.Sequence(lambda n: n)
    name = factory.Faker('name')
    path = factory.Faker('text', max_nb_chars=50)
    is_dir = factory.Faker('boolean') 

Я допустил ошибку при импорте класса

проблема: from webshare.tests.factories import WebShareFileFactoryBoy

решение: from webshare.tests.factories.WebShareFileFactoryBoy import WebShareFileFactoryBoy

factories - это каталог и файл python с тем же именем, что и класс

Второе решение: в init.py добавьте

from .WebShareFileFactoryBoy import WebShareFileFactoryBoy

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