Python Django TypeError在尝试保存模型时出错
我试图创建一个todo添加,但当我试图保存我的模型时,它说todo得到了一个意外的关键字参数Python Django TypeError在尝试保存模型时出错,python,django,typeerror,Python,Django,Typeerror,我试图创建一个todo添加,但当我试图保存我的模型时,它说todo得到了一个意外的关键字参数 TypeError at / todo() got an unexpected keyword argument 'user' 它抛出以下错误 我的模特 class todo(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) title = models.CharField(max_length=
TypeError at /
todo() got an unexpected keyword argument 'user'
它抛出以下错误
我的模特
class todo(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
description = models.TextField()
date= models.DateTimeField(auto_now = True)
is_completed = models.BooleanField(default=False)
def __str__(self):
return self.user.username + self.title
我的观点是这样的
def todo(request):
if request.method == "POST":
title = request.POST.get('title')
description = request.POST.get('description')
todo_list = todo(user=request.user, title=title, description= description)
todo_list.save()
messages.success(request, 'Successfully Created')
return render(request, 'main/todo.html')
请帮助我解决问题您的模型和视图都命名为
todo
,因此如果您在该视图中调用todo
,函数将覆盖该模型,从而进行递归调用
您可以使用不同的名称导入todo
,如:
from app_name.models import todo as todo_model
def todo(request):
if request.method == 'POST':
title = request.POST.get('title')
description = request.POST.get('description')
todo_list = todo_model.objects.create(
user=request.user,
title=title,
description= description
)
messages.success(request, 'Successfully Created')
return render(request, 'main/todo.html')
然后您可以使用:
from app_name.models import Todo
def todo(request):
if request.method == 'POST':
title = request.POST.get('title')
description = request.POST.get('description')
todo_list = Todo.objects.create(
user=request.user,
title=title,
description= description
)
messages.success(request, 'Successfully Created')
return render(request, 'main/todo.html')
从app_name.models导入Todo
def todo(请求):
如果request.method==“POST”:
title=request.POST.get('title')
description=request.POST.get('description')
todo_list=todo.objects.create(
user=request.user,
头衔,
描述=描述
)
messages.success(请求“已成功创建”)
返回渲染(请求'main/todo.html')
注意:通常最好使用来引用用户模型,而不是直接使用。有关更多信息,请参见
注意:您可以将视图限制为具有
注意:最好使用 而不是手动验证和清理数据。
表单
将不会
这不仅简化了在HTML中呈现表单,而且还使其更加方便
验证输入,并将数据清理为更方便的类型
您的模型和视图都被命名为todo
,也就是说,您只是在递归地调用您的视图。。。
from app_name.models import Todo
def todo(request):
if request.method == 'POST':
title = request.POST.get('title')
description = request.POST.get('description')
todo_list = Todo.objects.create(
user=request.user,
title=title,
description= description
)
messages.success(request, 'Successfully Created')
return render(request, 'main/todo.html')