首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django __init__()采用一个位置参数,但给出了6个

django __init__()采用一个位置参数,但给出了6个
EN

Stack Overflow用户
提问于 2021-08-24 17:57:55
回答 3查看 1.2K关注 0票数 0

我的模特班:

代码语言:javascript
运行
复制
class Campaign(models.Model):
    name = models.CharField(max_length=255)
    campaign_id = models.CharField(max_length=8, null=False, blank=False, unique=True)

    def __init__(self):
        super(Campaign, self).__init__(self)
        self.campaign_id = generate_random_id(8) # it generates just random string

    class Meta:
        ordering = ["name"]

    def __str__(self):
        return self.name

我的观点课:

代码语言:javascript
运行
复制
def campaign_list(request):
    campaigns = Campaign.objects.order_by('name').all()
    return render(request, 'mp/campaign/list.html', {'campaigns': campaigns})

我搞错了

init()采用一个位置参数,但给出了6个

在我的模型中创建init之前,一切都很好。但我假设现在Campaing.object.all()使用的是构造函数,而不是str。我怎么能忽略这一点,而在.all中仍然只使用引用名称,而不是再次创建对象?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-27 19:28:33

为什么会发生这样的事情

我得到了以下错误:

Response.__init__() take one positional argument but 2 were given

考虑下面的示例:在function中使用views.pyreturning -- Response

但是当我在visual studio中使用visual studio扩展时

我不小心从requests模块而不是rest_framework导入了rest_framework

代码语言:javascript
运行
复制
# example 
from requests import Response
#from rest_framework.response import Response

def hello_world_view(request):
    return Response('ok')

来自请求模块的响应类

有一个位置参数

响应类来自rest_framework

可以有多个位置参数

票数 3
EN

Stack Overflow用户

发布于 2021-08-24 18:09:59

它可以将*args、**kwargs作为参数传递到init中。

代码语言:javascript
运行
复制
def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)  # dont have to pass self
    self.campaign_id = generate_random_id(8) # it generates just random string

您还可以重写save方法。

代码语言:javascript
运行
复制
def save(self, *args, **kwargs):
    self.campaign_id = generate_random_id(8)
    super().save(*args, **kwargs)
票数 2
EN

Stack Overflow用户

发布于 2021-08-24 18:08:57

重写保存方法,而不是初始化程序:

代码语言:javascript
运行
复制
class Campaign(models.Model):
    name = models.CharField(max_length=255)
    campaign_id = models.CharField(max_length=8, unique=True)

    def save(self, *args, **kwargs):
        self.campaign_id = generate_random_id(8)
        super().save(*args, **kwargs)

    class Meta:
        ordering = ["name"]

    def __str__(self):
        return self.name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68912049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档