无法从factoryBoy类创建对象
我试着创建一个类,并用这个类来生成一些实例,但在我的 Django 终端里却无法创建任何实例。
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
我只是想从一个工厂类创建实例。
编辑:解决办法是导入的方法。
from webshare.tests.factories.WebShareFileFactoryBoy import WebShareFileFactoryBoy
factories 是一个文件夹,而这个 Python 文件的名字和类名是一样的。
2 个回答
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')
0
我在导入类的时候犯了个错误。
问题是:
from webshare.tests.factories import WebShareFileFactoryBoy
解决办法是:
from webshare.tests.factories.WebShareFileFactoryBoy import WebShareFileFactoryBoy
这里的 factories 是一个文件夹,而这个 Python 文件的名字和类名是一样的。
第二种解决办法是:
在 init.py 文件里添加:
from .WebShareFileFactoryBoy import WebShareFileFactoryBoy