フォームに3つの選択ボックスをレンダリングしています。 私はそれぞれのボックスをフィルタリングして、別々のタイプの日を持っています。 フォームを送信すると、このエラーが発生します。int()引数は、 'QueryDict'ではなく文字列または数字でなければなりません
int() argument must be a string or a number, not 'QueryDict'
フォームを保存するにはどうすればよいですか?
これは、各選択ボックスごとに異なるフィルタリングを得るために私が自分のforms.pyファイルで行っていることです。
class ContractForm(forms.ModelForm):
def __init__(self, project_id, *args, **kwargs):
super(ContractForm, self).__init__(*args, **kwargs)
self.fields['shoot_day'].queryset = Day.objects.filter(type=SHOOT, project__id=project_id)
self.fields['travel_day'].queryset = Day.objects.filter(type=TRAVEL, project__id=project_id)
self.fields['additional_day'].queryset = Day.objects.filter(type=ADDITIONAL, project__id=project_id)
私はそうのように私のPROJECT_IDを取得しています:
def editcontract(request, contract_id, slug):
context_dict = {}
contract = get_object_or_404(Contract, pk=contract_id)
if request.method == 'POST':
form = ContractForm(request.POST, instance=contract)
if form.is_valid():
form.save()
TvUsageForm = TvUsageFormSet(request.POST, instance=contract)
AdditionalMediaUsageForm = AdditionalMediaUsageFormSet(request.POST, instance=contract)
TvUsageForm.save()
AdditionalMediaUsageForm.save()
return HttpResponseRedirect(reverse('contract_list', kwargs={'slug':slug}))
else:
form = ContractForm(instance=contract, project_id=contract.project_id)
TvUsageForm = TvUsageFormSet(instance=contract)
AdditionalMediaUsageForm = AdditionalMediaUsageFormSet(instance=contract)
project = get_object_or_404(Project, slug=slug)
context_dict = { 'form': form,
'tvusage_form':TvUsageForm,
'additional_form':AdditionalMediaUsageForm,
'project':project
}
return render_to_response('contracts/edit_contract.html', context_dict, RequestContext(request))
あなたはどこから 'project_id'を取得するかを示していないので、私たちはあなたを助けることができません。 –
が更新されました。質問の私の編集を見てください。ありがとう – darren