2014-02-12 2 views
0

Я пытаюсь использовать метод save из форм django. Я передаю 2 другие параметры в экономии - идентификатор пользователя и идентификатор продукта, но я получаю следующее сообщение об ошибке:save() получил несколько значений для аргумента ключевого слова

TypeError at /kinect-xbox-360/review_submit/ 
save() got multiple values for keyword argument 'uid' 

Это мой метод сохранения:

class ReviewForm(ModelForm): 
     class Meta: 
       model = Review   
       fields = ('review_text','tag') 

     tag = forms.CharField(widget = forms.TextInput(attrs={'placeholder': 'teste'}), label='Descreva este produto em 1 palavra', help_text = 'separe as palavras por vírgulas') 
     review_text = forms.CharField(widget = forms.Textarea(attrs={'cols':150,'rows':5}), label='O que você achou deste produto?', min_length=50, max_length=2000) 

    def save(uid, product, self, commit=True): 
      # save the response object 
      response = super(ReviewForm, self).save(commit=False) 
      #print(self.cleaned_data['review_text']) 
      #response.survey = self.survey 
      #user = uid 
      tag = self.cleaned_data['tag'] 
      product = product 
      review_text = self.cleaned_data['review_text'] 
      #created 
      #updated 


      response.save() 

      return response 

И это мнение который имеет дело с ответом POST:

u = User.objects.get(username=reviews.user) 
prod = Product.objects.get(slug=slug) 
if request.method=="POST": 
     form = ReviewForm(request.POST) 

     if form.is_valid(): 
      response = form.save(uid=u.id, product=prod.id) 
      msg = 'Obrigado por avaliar ' + prod.name 
     else: 
      msg = 'Houve algum erro no servidor :(' 
     return render(request, 'product_detail.html', {'prod':prod, 'reviews':reviews, 'user':u.first_name, 'msg':msg})  
    else:  
     form = ReviewForm()  
     args = {} 
     args.update(csrf(request)) 
    return render(request, 'product_detail.html', {'prod':prod, 'reviews':reviews, 'user':u.first_name, 'form':form}) 
+0

Вопрос только в том, почему 'self' не является первым параметром в' save'? –

+0

Потому что я использую конкретные параметры - uid и product - которые не являются обычными для сохранения. Если я положил эти два на конец, django вернет ошибку –

ответ

2

Paulo находится на правильном пути в комментариях. self должен быть первым аргументом в определении метода. Вы не можете произвольно переупорядочить такие аргументы.

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