The int () parameter must be a string or a number, not a "QueryDict"

I draw three multiple rectangles from it. I filter each box to have a separate day type. When I submit my form, I get this error.

int() argument must be a string or a number, not 'QueryDict' 

What should I do to keep my shape?

This is what I do on my forms.py file to get different filtering for each selection window.

 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) 

I get my project_id as follows:

 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)) 
+4
source share
2 answers

You have a confusion with the argument and keyword arguments:

Instead:

 ContractForm(instance=contract, project_id=contract.project_id) 

Do you want to:

 ContractForm(contract.project_id, instance=contract) 

To clarify: your constructor takes the project identifier as the first argument, not as a keyword argument. So you need to give it the first argument. Simple confusion, huh ??

+7
source
0
source

All Articles