gpt4 book ai didi

使用工厂男孩时,Django 模型对象没有属性 '_default_manager'

转载 作者:行者123 更新时间:2023-12-02 02:21:18 24 4
gpt4 key购买 nike

我正在使用 Django Rest Framework 来创建一些 api。我正在使用工厂男孩来创建测试实例。我有一个名为 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()

这个模型奏效了。我能够创建检索和列出客户端对象。现在我要对路由进行单元测试并开始使用 Factory boy 创建实例

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()

这会引发错误属性错误:“客户端”对象没有属性“_default_manager”。

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

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

最佳答案

您需要传递对 Client 的引用class,不构造 Client对象,model = Client<s>()</s>中的括号因此应该删除:

class ClientFactory(DjangoModelFactory):
# …

class Meta:
<b>model = Client</b>

关于使用工厂男孩时,Django 模型对象没有属性 '_default_manager',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66374435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com