【问题标题】:Django Form Initial Value not ShowingDjango表单初始值未显示
【发布时间】:2020-11-13 07:36:32
【问题描述】:

我想制作一个表格来编辑模型对象,初始数据是原始数据(更改之前),但它没有显示, 这只是一个空白表格

models.py:

class Employee(models.Model):
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)

forms.py:

class EmployeeForm(forms.ModelForm):
    class Meta:
        model = Employee
        fields = ['first_name', 'last_name']
        labels = {'first_name' : 'First Name:', 'last_name' : 'Last Name:' }
        input_attrs = {'class' : 'form-control'}
        widgets = {
            'first_name' : forms.TextInput(attrs=input_attrs), 
            'last_name' : forms.TextInput(attrs=input_attrs)}

views.py:

def edit(request, id):
    employee = Employee.objects.get(id=id)
    data = {
        'first_name' : employee.first_name,
        'last_name' : employee.last_name,
    }
    form = EmployeeForm(request.POST or None, initial=data, instance=employee)
    if (form.is_valid and request.method == 'POST'):
        form.save()
        return HttpResponseRedirect('/form/')
    response = {'employee_form' : EmployeeForm, 'employee':employee}
    return render(request, 'editemployee.html', response)

editemployee.html:

<div class="form">
    <div class="form-group">
        <form action="" method="POST">
            {% csrf_token %}
            {% for form in employee_form %}
                {{ form.label }}
                {{ form }} 
                <br>
            {% endfor %}
            <input type="submit" value="Submit" class="btn btn-primary">
        </form>
    </div>
</div>

谁能告诉我哪里出错了?我已经尝试了很多东西,但无济于事。表单工作正常,但初始数据不显示。

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    编辑现有记录,不需要初始数据,来自模型实例。

    form = EmployeeForm(request.POST or None, instance=employee)
    

    如果您需要这些字段中的默认数据,您可以将其添加到模型中。

    【讨论】:

    • 谢谢,在尝试使用initial之前我也尝试过,但它仍然不会显示...
    • 初始数据是根据模型中的值设置的吗?我猜这就是'first_name' : employee.first_name, 正在做的事情。这似乎会设置与员工实例相同的值。
    猜你喜欢
    • 2021-01-22
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多