You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过factoryBoy类创建实例的Django技术求助

Django Shell中使用factory_boy创建模型实例报错的解决方案

问题概述

在Django Shell中尝试通过自定义factory_boy类创建WebShareFileFolders模型实例时,调用类或create()方法均触发报错,最终确认问题源于错误的导入方式。

环境信息

  • Python 3.7.9
  • factory-boy 3.3.0

自定义Factory类代码

文件路径:webshare/tests/factories/WebShareFileFactoryBoy.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'

解决方法

错误原因是当前导入的是WebShareFileFactoryBoy模块本身,而非模块内的同名Factory类。需使用明确的导入语句指定导入模块中的类:

from webshare.tests.factories.WebShareFileFactoryBoy import WebShareFileFactoryBoy

导入完成后,即可正常调用类实例化或create()方法生成模型实例:

# 直接实例化
instance = WebShareFileFactoryBoy()
# 使用factory_boy的create方法创建并保存到数据库
instance = WebShareFileFactoryBoy.create()

内容的提问来源于stack exchange,提问作者jordan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:52:38