Django 양식 및 ModelForm 클래스의 꽤 멋진 속성을 사용하는 데 어려움이 있습니다. 특히 모델 인스턴스로 인스턴스화 할 때 양식 인스턴스에 연관된 데이터가 있는지 확인하는 데 문제가 있습니다. 내가 양식을장고 양식이 모델 인스턴스로 인스턴스화 된 경우에도 언 바운드로 표시됩니다.
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})
를 사용하는 경우 여기를 먼저
우리가 views.py
의 일부에 도착 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']
다음의 형태의 매우 간단한 설정을 살펴입니다 그리고 나는 렌더링하고 할 때 내 템플릿의 양식 is_bound 속성을 사용하여 제출 버튼 캡션을 설정하려고합니다.
{% 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
조건을 산출합니다. 내가 눈치 채 셨으니, 내 view.py
코드에서 pdb 추적을 설정하고 렌더링하기 직전에 양식 객체를 검사했을 때는 False
을 반환합니다. form['first_of_month']
이 양식을 만드는 데 사용 된 MonthCoeff 인스턴스와 관련된 값을 반환하는 경우에도 마찬가지입니다.
다른 사람이 기대하지 못했던 is_bound 속성이 왜 응답하지 않는지에 대한 통찰력이 있습니까? Django Docs?
감사합니다, 매력처럼 작동 할 수. "바인딩 된"대 "인스턴스"를 구분하는 데 문제가있었습니다. 파이썬에서 인스턴스와 같은 속성을 부울 값으로 평가할 수 있다는 사실을 잊어 버렸습니다. 더 까다로운 언어로 작업하는 데 시간이 너무 많이 걸립니다. – RyanM