0
我想要在formset中獲取特定表單的結果。我嘗試過一個沒有成功的formset和modelformset。無法在django formset中獲取表單值
有了一個formset
我的看法是這樣的:
def display(request, pk=None, action='add'):
customer = get_customer(request)
qs = CustomerActivity.objects.filter(customer=customer)
AuthorFormSet = modelformset_factory(CustomerActivity, form=ActivityEntryForm, extra=0)
if request.method == 'POST':
formset = AuthorFormSet(request.POST)
if form.is_valid:
print 'form valied'
for form in formset:
print form.cleaned_data['duration']
duration = request.POST.get('duration')
activity = request.POST.get('activity')
print duration
else:
formset = AuthorFormSet(queryset=qs)
context = {
'formset':formset,
}
return render(request, 'activity/activity.html', context)
我得到一個錯誤:
CustomerActivityForm' object has no attribute 'duration'
我甚至有一種形式命名CustomerActivityForm,它稱爲ActivityEntryForm:
class ActivityEntryForm(forms.ModelForm):
duration = forms.IntegerField(required=False)
class Meta:
model = CustomerActivity
fields = ('duration',)
我經常表單集嘗試
這是我的觀點:
def display_2(request, pk=None, action='add'):
customer = get_customer(request)
entered_at, day_start, day_end = get_date_query_elements(request)
qs = CustomerActivity.objects.filter(customer=customer).values()
ArticleFormSet = formset_factory(ActivityEntryForm, extra=0)
if request.method == 'POST':
formset = ArticleFormSet(request.POST, request.FILES)
if formset.is_valid():
for form in formset:
print form.duration
pass
else:
formset = ArticleFormSet(initial=qs)
context = {
'formset':formset,
}
return render(request, 'activity/activity.html', context)
下面的形式:
class ActivityEntryForm(forms.Form):
duration = forms.IntegerField(required=False)
在這裏,我得到的錯誤:
ActivityEntryForm' object has no attribute 'duration'
我如何獲得持續時間值?
謝謝。我添加了上面的內容,現在我收到錯誤消息:'CustomerActivityForm'對象沒有'cleaned_data'屬性。我沒有一個名爲CustomerActivityForm的表單,你知道這是從哪裏產生的嗎? – Atma 2014-10-29 21:26:39
這是formset中自動生成的表單。但是如果你使用上面的第一個代碼,問題是你需要實際調用'is_valid()';你錯過了括號。 – 2014-10-29 22:03:30