gpt4 book ai didi

python - save() 得到了一个意外的关键字参数 'commit' Django 错误

转载 作者:太空狗 更新时间:2023-10-30 01:21:45 24 4
gpt4 key购买 nike

我收到这个错误“save() 得到了一个意外的关键字参数‘commit’”我想做的是在用户上传他的文件时请求用户。

更新我添加了我的 model.py 和 forms.py 以及错误的屏幕截图对不起我第一次学习 python/django。

screen shot

模型.py

class Document(models.Model):
fs = FileSystemStorage(location=settings.MEDIA_ROOT)
input_file = models.FileField(max_length=255, upload_to='uploads', storage=fs)
user = models.ForeignKey(User)

def __unicode__(self):
return self.input_file.name

@models.permalink
def get_absolute_url(self):
return ('upload-delete', )

表单.py

class BaseForm(FileFormMixin, django_bootstrap3_form.BootstrapForm):
title = django_bootstrap3_form.CharField()



class MultipleFileExampleForm(BaseForm):
input_file = MultipleUploadedFileField()

def save(self):
for f in self.cleaned_data['input_file']:
Document.objects.create(
input_file=f
)

这是我的views.py

@login_required
def list(request):
# Handle file upload
if request.method == 'POST':
form = MultipleFileExampleForm(request.POST, request.FILES)
if form.is_valid():
newdoc = form.save(commit=False)
newdoc.user = request.user
newdoc.save()

# Redirect to the document list after POST
return HttpResponseRedirect(reverse('myfiles.views.list'))
else:
form = MultipleFileExampleForm() # A empty, unbound form

documents = Document.objects.all

return render_to_response(
'example_form.html',
{'documents': documents, 'form': form},
context_instance=RequestContext(request)
)

最佳答案

您不是 django.forms.ModelForm 的子类,但是,您正在像现在这样编写代码。

您需要子类化 ModelForm(它具有带提交参数的保存方法)。

调用 super 也不起作用,因为父类(super class)没有带有该参数的保存方法。

删除 commit=False 除非您将代码重写为 django.forms.ModelForm 的子类,否则它永远不会工作

在任何情况下,save 方法都应该返回一个实例。我建议您将方法重命名为 save_all_files 或类似名称。您将无法使用 commit=False 在保存方法中保存多个对象。这不是预期用途。

如需进一步阅读,您可以阅读源代码以了解 commit=FalseModelForm 类 中的工作原理,地址如下:

https://github.com/django/django/blob/master/django/forms/models.py

关于python - save() 得到了一个意外的关键字参数 'commit' Django 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29131198/

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