factory_boy没有属性'对象'

时间:2017-10-23 21:58:14

标签: django django-models django-testing factory-boy

我正在尝试编写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,但它只有一个例子,我不确定这是否是我的问题。 (现在花了几天时间)

提前感谢您的协助。

2 个答案:

答案 0 :(得分:1)

如果您的模型类不是从django models.Model继承的,那么这个错误基本上就会发生。所以"对象"不可用。 如果你想使用默认的django"对象" :

class YourClass(models.Model):
    ....

或添加

objects = models.Manager()
OP回答说。

祝你好运!

答案 1 :(得分:0)

我的问题是我的models.py模型MyClassViewFactory需要额外的一行:

objects = models.Manager()

无论如何,这都取得了进展!