2015-07-25 5 views
1

У меня есть форма, которая удаляет информацию о грузовике из моей базы данных. Когда это не POST, форма отображает все объекты Грузовик, который принадлежит к вошедшего пользователя:Django: Параметры фильтра ModelChoiceField на основе зарегистрированных объектов пользователя

Модель:

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) 

Форма:

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') 
     ) 

Вид:

... 
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) 

Проблема в том, что я продолжаю получать ошибку:

Тип исключения: TypeError

Исключение Значение: Инициализационные() принимает по крайней мере 2 аргумента (4 дано)

+1

Можете ли вы дать полный след следа ошибки? Это происходит в GET или POST или обоих? – tcarobruce

ответ

0

https://docs.djangoproject.com/en/1.8/ref/forms/fields/#modelchoicefield

Docs говорит:

Требуется один аргумент: QuerySet

параметр QuerySet требуется, как указано и не может быть оставлен в покое после начала

Вы предоставили слишком еще больше QuerySet параметр не существует.

truck = forms.ModelChoiceField(
    label='Trucks', 
    empty_label=None, # No empty label 
    required=False, 
) 
+0

Извините за позднюю обратную связь, но ваш ответ мне очень помог! Спасибо! –

Смежные вопросы