即使用模型实例实例化,Django表单也显示为未绑定

时间:2017-03-08 22:22:28

标签: django django-forms

我在使用Django表单和ModelForm类的公认非常时髦的属性时遇到了困难。特别是我无法确定表单实例在使用模型实例进行实例化时是否具有关联的数据。

首先,在Entity { property SceneLoader shipObjSmall: SceneLoader { id: shipObjSmall source: "qrc:/models/tugboat-small.qgltf" // code to print status on onStatusChanged } components: [shipObjSmall] }

中查看一组非常简单的表单
forms.py

接下来,我们使用表格

from django.forms import ModelForm from .models import ItemCoeff, MonthCoeff class MonthForm(ModelForm): """A class that defines an HTML form that will be constructed for interfacing with the Monthly Coefficients""" title='Set Month Coefficient' class Meta: model=MonthCoeff fields = ['first_of_month', 'product_category', 'month_coeff', 'notes'] class ItemForm(ModelForm): """ A class that defines a Django HTML form to be constructed for interfacing with the ItemCoeff model. """ title='Set Item Coefficient' class Meta: model=ItemCoeff fields = ['item_num','item_name','item_coeff','notes'] 部分
views.py

当我在模板中呈现表单时,我正在尝试使用is_bound属性来设置提交按钮的标题,如下所示:

def set_month_form(request, myid=False):
if myid:
    mcoeff=MonthCoeff.objects.get(id=myid)
    form=MonthForm(instance = mcoeff)
    categories = False
else:
    form=MonthForm()
    categories=list(MonthCoeff.objects.values('product_category').distinct())
import pdb; pdb.set_trace()
return render(request,'coeffs/forms/django_form.html',{'form':form, 'user': request.user})

然而,这种方法总是产生{% if form.is_bound %} <button type="submit" name="button">Update</button> {% else %} <button class="btn btn-lg btn-primary" type="submit" name="button">Add</button> {% endif %} 条件。我确定你注意到了,我在我的else代码中设置了pdb跟踪,当我在呈现view.py之前检查表单对象时返回form.is_bound。即使False返回与用于创建表单的MonthCoeff实例关联的值,也会发生这种情况。

有没有人对is_bound属性没有响应的原因有任何见解,因为我一直期望从其他方面出色的Django Docs

1 个答案:

答案 0 :(得分:1)

但是你没有把它绑定到数据上。你已经提供了一个实例参数,但这根本不是一回事;只是将表单与提供初始值的模型实例相关联,并在保存时更新。绑定与未绑定取决于您是否通过POST传递任何数据。

如果你想根据是否有实例来改变按钮,那就这样做:

{% if form.instance %}
        <button type="submit" name="button">Update</button>
{% else %}
        <button class="btn btn-lg btn-primary" type="submit" name="button">Add</button>
{% endif %}