代码之家  ›  专栏  ›  技术社区  ›  Ignacio

如何使用相同的django表单编辑/添加对象?

  •  2
  • Ignacio  · 技术社区  · 14 年前

    嘿,我已经到处找过了(特别是这个问题: 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
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Ignacio    14 年前

    好的,经过一晚上的调试,我发现了问题所在。其实挺蠢的。 问题是在提交时,任务id为“无”。

    1. 我在表格上加了: <form action="{% url App.myapp.views.new_task **task_id** %}"
    2. {“form”:窗体,“submit”:提交, “task\u id”:task.id }, 请求)

    就是这样。新手的错误。如果有人知道更好的方法,我愿意接受建议。