Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模型对象没有属性'_默认管理器';使用工厂男孩时_Django_Django Rest Framework_Django Testing_Django Tests_Factory Boy - Fatal编程技术网

Django模型对象没有属性'_默认管理器';使用工厂男孩时

Django模型对象没有属性'_默认管理器';使用工厂男孩时,django,django-rest-framework,django-testing,django-tests,factory-boy,Django,Django Rest Framework,Django Testing,Django Tests,Factory Boy,我正在使用Django Rest框架创建一些api。我正在使用FactoryBoy创建测试实例。我有一个名为base_model的抽象模型,它由项目的所有其他模型继承 created_at = models.DateTimeField(editable=False) updated_at = models.DateTimeField(editable=False) class Meta: abstract = True ordering

我正在使用Django Rest框架创建一些api。我正在使用FactoryBoy创建测试实例。我有一个名为base_model的抽象模型,它由项目的所有其他模型继承

    created_at = models.DateTimeField(editable=False)
    updated_at = models.DateTimeField(editable=False)

    class Meta:
        abstract = True
        ordering = ['id']

    def save(self, *args, **kwargs):
        if not self.created_at:
            self.created_at = timezone.now()
        self.updated_at = timezone.now()
        super(BaseModel, self).save(*args, **kwargs)
我的客户模型

 from django.db import models

from mtl_manager.api.base_model import BaseModel
from mtl_manager.projects.enums import ProjectStatus
 
class Client(BaseModel):
    client_name = models.CharField(max_length=250, blank=False)
    phone_number = models.CharField(max_length=250, blank=False)
    email = models.EmailField(blank=False, unique=True, null=False)
    addressLane1 = models.TextField()

这种模式奏效了。我能够创建、检索和列出客户机对象。现在,我要对这些路由进行单元测试,并开始使用FactoryBoy创建实例

class ClientFactory(DjangoModelFactory):
    name = Faker("company")
    gst = "323232";
    phone_number = Faker("phone_number")
    zipCode = "686542"
    address_lane = Faker("street_address")
    registration_number = "32313094839483"
    state = "kerala"
    country = Faker("country")

    class Meta:
        model = Client()
这将引发错误属性错误:“客户端”对象没有属性“\u默认值\u管理器”

但在我的控制台上,我验证了客户端是否使用默认管理器

In [11]: Client.objects
Out[11]: <django.db.models.manager.Manager at 0x7fe4fc6d7bb0>
[11]中的
:Client.objects
出[11]:

您需要传递对
客户端
类的引用,而不是构造
客户端
对象,
model=Client()
中的括号因此应该被删除:

class ClientFactory(DjangoModelFactory):
    # …

    class Meta:
        model = Client
class客户端工厂(DjangoModelFactory):
# …
类元:

model=Client
您需要传递对
Client
类的引用,而不是构造
Client
对象,因此应删除
model=Client()
中的括号:

class ClientFactory(DjangoModelFactory):
    # …

    class Meta:
        model = Client
class客户端工厂(DjangoModelFactory):
# …
类元:

model=Client
谢谢,那是quickThank谢谢,那是quickSomeone建议以“不可复制”结束此问题。虽然这是由打字错误引起的,但我认为这里的错误也可能发生在其他人身上。因此,这个问题在将来可能对其他人有用。有人建议以“不可复制”来结束这个问题。虽然这是由打字错误引起的,但我认为这里的错误也可能发生在其他人身上。因此,这个问题可能对未来的其他人有用。