我正在尝试编写Django测试。我收到这个错误:
... / lib / python3.5 / site-packages / factory / django.py“,第118行,in _get_manager manager = model_class.objects AttributeError:type object'MyClassView'没有属性'objects'
这是尝试设置测试时失败的setUp方法(和导入)。 (运行生成错误的代码)
import django
django.setup()
from app_name.tests.app_name_factory import MyClassViewFactory
from app_name import models
class Test_MyClassView(TestCase):
def setUp(self):
self.MyClassView = MyClassViewFactory()
这是我的模特:
class MyClassView(models.Model):
state = models.CharField('State', max_length=2, null=True)
division = models.CharField('Division', max_length=2, null=True)
name = models.CharField('Name', max_length=40, null=True)
choice_objects = MyClassViewManager1()
这是我的工厂类:
from factory.django import DjangoModelFactory
import factory.fuzzy
import factory
from app_name import models
from faker import Factory as FakerFactory
faker = FakerFactory.create()
class MyClassViewFactory(DjangoModelFactory):
class Meta:
model = models.MyClassView
state = 'WI'
division = 'OP'
name = factory.LazyAttribute(lambda x: faker.text(max_nb_chars=40))
我的其他工厂似乎工作正常,但MyClassViewFactory没有。我认为这与
有关choice_objects = MyClassViewManager1()
我在factory_boy上阅读了自定义管理器的文档http://factoryboy.readthedocs.io/en/latest/recipes.html#custom-manager-methods,但它只有一个例子,我不确定这是否是我的问题。 (现在花了几天时间)
提前感谢您的协助。
答案 0 :(得分:1)
如果您的模型类不是从django models.Model继承的,那么这个错误基本上就会发生。所以"对象"不可用。 如果你想使用默认的django"对象" :
class YourClass(models.Model):
....
或添加
objects = models.Manager()
OP回答说。
祝你好运!
答案 1 :(得分:0)
我的问题是我的models.py模型MyClassViewFactory需要额外的一行:
objects = models.Manager()
无论如何,这都取得了进展!