Python Django-TypeError-save()得到一个意外的关键字参数';强制插入';
我是Django的新手,我不知道这个错误。请帮忙。它给出了TypeError-save()得到了一个意外的关键字参数“force\u insert”。我测试了下面的代码,他们能够保存新的用户注册,但现在它不再保存了 下面是views.py的一部分,我认为它有一些问题:Python Django-TypeError-save()得到一个意外的关键字参数';强制插入';,python,django,Python,Django,我是Django的新手,我不知道这个错误。请帮忙。它给出了TypeError-save()得到了一个意外的关键字参数“force\u insert”。我测试了下面的代码,他们能够保存新的用户注册,但现在它不再保存了 下面是views.py的一部分,我认为它有一些问题: from django.shortcuts import render, redirect from django.contrib.auth.forms import UserCreationForm fr
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from . forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
form.save(force_insert=False)
messages.success(request, f'Thank you {username}! Your account has been created!')
return redirect('login')
else:
form = UserRegisterForm()
return render(request, 'users/register.html', {'form':form})
还有模特
from django.db import models
from django.contrib.auth.models import User
from PIL import Image
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='profile_pics/default.jpg', upload_to='profile_pics')
def __str__(self):
return (self.user)
def save(self):
super().save()
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300,300)
img.thumbnail(output_size)
img.save(self.image.path)'
您已重写save方法,但尚未保留其签名。您需要接受与原始方法相同的参数,并在调用super时传入它们
def save(self, *args, **kwargs):
super().save((*args, **kwargs)
...
在Django中重写模型的save方法时,还应将
*args
和**kwargs
传递给重写的方法。此代码可以正常工作:
def save(self, *args, **kwargs):
super(Profile, self).save(*args, **kwargs)
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300,300)
img.thumbnail(output_size)
img.save(self.image.path)'
我也有同样的问题 这将解决它: 在users/models.py文件中编辑super方法: Python3版本 我在谷歌上查找这个错误,找到了这个主题。这段代码解决了我在Python 3中的问题:
def save(self,force_insert=False,force_update=False,using=None,update_fields=None):
super().save(强制插入、强制更新、使用、更新字段)
- 使用
和django3.0
进行测试python3.8
.更改
form.save(force_insert=False)
forform.save()
谢谢,这是有效的,但你能解释一下为什么有效吗?@juliarnasion-每个函数都有一个“签名”,一个参数模式。如果您使用不接受任何参数的新定义(隐式self
除外)覆盖save
,则在传递预期要处理的参数(例如强制插入
)时,您会收到报告的错误。*args,**kwargs
语法说,“收集args
列表中的所有位置args和kwargs
dict中的所有关键字args”。t他们可以通过super
电话进行工作。非常感谢。这项工作很完美。在Corey ms Django博客项目中得到了这个。很好的解决方案。它工作得很好。
def save(self, *args, **kwargs):
super.save(*args, **kwargs)