我遇到的问题是表单总是创建一个新对象,而不是修改现有对象。
这是我的代码:
def new_task(request, task_id=None):
if task_id is not None:
task = Task.objects.get(pk=task_id)
else:
task = Task()
if request.method == 'POST': # If the form has been submitted...
form = TaskForm(request.POST, instance=task)
if form.is_valid():
form.save();
return tasks(request, 'Task #%s created successfully.' % (task.id))
else:
form = TaskForm(instance=task)
return custom_render('user/new_task.html',
{'form': form},
request);
我遗失的任何线索?感谢
编辑:添加了表单定义。
class TaskForm(ModelForm):
description = CharField(max_length = 1500,
widget= forms.Textarea(attrs={'class':'task-description'}),
required=True)
class Meta:
model = Task
答案 0 :(得分:4)
好的,经过一个愉快的调试之夜后,我发现了问题所在。实际上相当愚蠢。 问题是在提交时,task_id为None。
我通过以下方式解决了这个问题:
<form action="{% url App.myapp.views.new_task **task_id** %}"
在我的观点中,我补充道:
返回custom_render('user / new_task.html', {'form':表单,'提交':提交,'task_id':task.id }, 请求)
就是这样。一个新手的错误。如果那里有人知道更好的方式,我愿意接受建议。