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})
Вопрос только в том, почему 'self' не является первым параметром в' save'? –
Потому что я использую конкретные параметры - uid и product - которые не являются обычными для сохранения. Если я положил эти два на конец, django вернет ошибку –