0

您好我正在尝试实现一个编辑页面,该页面接受对象的 id 并加载其所有原始值 && 启用编辑/更新。例如

对于文本类型,我使用

<label>Field1:</label>
     <input type="text" id="id_field1" value='{{ objectInstance.filed1}}' name="field1"/>

对于Textares

<label>Field2:</label>
    <textarea id="id_field2" name="field2">
        {{ objectInstance.field2}}  

他们在加载实例的原始数据和允许编辑方面都工作得很好。但是对于日期字段,我不知道如何加载它。我正在尝试类似

<label>Deadline:</label>
            <input type="date" id="id_deadline" name="deadline" value={{objectInstance.deadline}}>

(截止日期为日期数据类型,例如 2013-6-4)

任何人都可以帮助解决这个问题吗?非常感谢。

4

1 回答 1

0

您可以使用UpdateView基于通用类的视图来简化此过程。之前回答过类似的问题。

解决此问题的另一种方法是使用ModelForm,并使用实例预加载它。这实际上是什么UpdateView,但如果您不想使用基于类的视图,这里是替代方案:

在你的forms.py

from django import forms
from someapp.models import SomeModel

class SomeModelForm(forms.ModelForm):
    class Meta:
        model = SomeModel

在你的views.py

def someview(request):
    obj = SomeModel.objects.get(pk=1)  # Fetch the object to be edited
    form = SomeModelForm(instance=obj) # Load the form with the object's data
    return render(request, 'edit.html', {'form': form})

edit.html

<form method="POST">
{% csrf_token $}
{{ form }}
<input type="submit">
</form>

这将自动创建表单,并用模型中的数据填充它。您仍然需要编写逻辑来更新视图中的记录。

于 2013-06-04T04:28:23.670 回答