I have a form that remove a truck information from my database. When it is not a POST, the form displays all the Truck objects that belongs to the logged user:
Model :
class Truck(models.Model):
truck_name = models.IntegerField()
last_leave = models.DateField(blank=True, null=True)
next_leave = models.DateField(blank=True, null=True)
truck_route = models.CharField(max_length=120, blank=True,null=True)
user_name = models.CharField(max_length=128)
def __unicode__(self):
return str(self.truck_name)
Form :
class RemoveTruck(forms.Form):
truck = forms.ModelChoiceField(
label='Trucks',
empty_label=None, # No empty label
required=False,
)
def __init__(self, *args, **kwargs):
request = kwargs.pop('request')
super(RemoveTruck, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = 'id-removetruckform'
self.helper.form_class = 'blueForms'
self.helper.form_method = 'post'
self.helper.form_action = 'submit_survey'
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-lg-2'
self.helper.field_class = 'col-lg-8'
self.fields('truck').queryset = Truck.objects.all().filter(user_name=request.user.username)
self.helper.add_input(Submit('submit', 'Submit'))
self.helper.layout = Layout(
Field('truck')
)
View :
...
if request.method == 'POST':
form_remove_truck_post = RemoveTruck(request.POST, request=None)
if form_remove_truck_post.is_valid():
data = form_remove_truck_post.cleaned_data
truck = data['truck']
Truck.objects.all().filter(truck_name=truck.truck_name).delete()
return HttpResponseRedirect('/bucket/')
else:
form_remove_truck = RemoveTruck(request=request)
The problem is that I keep getting an error :
Exception Type:TypeError
Exception Value: init () takes at least 2 arguments (4 given)
https://docs.djangoproject.com/en/1.8/ref/forms/fields/#modelchoicefield
Docs says:
A single argument is required:queryset
queryset parameter is required as mentioned and can not be left alone upon initiation
You have provided way too more still queryset parameter is not there.
truck = forms.ModelChoiceField(
label='Trucks',
empty_label=None, # No empty label
required=False,
)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.