【发布时间】:2011-01-24 13:16:11
【问题描述】:
嘿,我已经四处搜索来做到这一点(特别是这个 Q:Django edit form based on add form?),但我就是无法让它工作。
我遇到的问题是表单总是创建一个新对象,而不是修改现有对象。
这是我的代码:
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
【问题讨论】:
-
只是为了添加更多信息,编辑时表单会正确填充对象的数据,添加新表单时显示为空。除此问题外,一切正常。
-
您是否覆盖了表单保存方法?你能显示表单定义吗?
-
我刚刚添加了表单def。不,我没有覆盖保存方法...
-
很奇怪,这段代码应该没有这样的问题。你确定 task_id 不是 None 吗?
-
嗯,我很确定,因为表单中填充了来自该任务的数据......当我不那么累时我会看看这个,我会返回一些回答,我希望。
标签: django django-forms