gpt4 book ai didi

python - 为什么表单 "save()"方法的签名应该与 django 中的基 Form 类匹配?

转载 作者:太空宇宙 更新时间:2023-11-04 05:49:16 25 4
gpt4 key购买 nike

例如,我有以下代码:

from django.db import models
from django.forms import ModelForm
from django.contrib.auth.models import User
from django.views.generic import FormView


class MyModel(models.Model)
owner = models.ForeignKey(User)
description = models.TextField()


class MyForm(ModelForm):

class Meta:
model = MyModel

def save(self, owner, commit=True):
self.instance.owner = owner
return super().save(commit)


class MyView(FormView):
success_url = '/'
form_class = MyForm
template_name = 'my_template.html'

def form_valid(self, form):
form.save(self.request.user)
return super().form_valid(form)

如果我在该代码上运行 pylint,它会给出以下错误:

[W0221(arguments-differ), MyForm.save] Arguments number differs from overridden 'save' method

这样做是不好的做法吗?我应该在 View form_valid 方法中设置 owner 吗?

最佳答案

查看文档:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method

为什么不使用 commit=False 调用保存,而不是使用不同的签名;这将返回模型实例。然后您可以添加适当的属性,在本例中为所有者,并直接保存模型。

关于python - 为什么表单 "save()"方法的签名应该与 django 中的基 Form 类匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031145/

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