Форма django получила несколько значений для аргумента ключевого слова

У меня есть простая модель следующим образом:

RATING_CHOICES = zip(range(1, 6), range(1, 6))
class Rating(models.Model):

    value = models.IntegerField(choices=RATING_CHOICES)
    additional_note = models.TextField(null=True, blank=True)
    from_user = models.ForeignKey(User, related_name='from_user')
    to_user = models.ForeignKey(User, related_name='to_user')
    shared_object = models.ForeignKey(ObjectDetail, null=True, blank=True)
    dtobject = models.DateTimeField(auto_now_add=True)

Из приведенной выше модели я создаю форму модели в своем файле forms.py следующим образом:

class RatingForm(ModelForm):

     class Meta:
          model = Rating
          exclude = ('from_user', 'dtobject',
                     'shared_object')

В своих URL-адресах я пытаюсь сделать следующее:

url(r'^rate/(?P<form_type>[\w]+)/(?P<oid>\d+)/(?P<oslug>[\w-]+)/$', 'rating_form', name='rating_form'),                     

А на мой взгляд, следующее:

def rating_form(form_type = None, oid = None, oslug=None):

    print form_type
    form = RatingForm(data=request.POST or None)

    if request.POST and form.is_valid():
           form.save()
        return HttpResponseRedirect("/")
    else:
        return render(request, "share.html", {'form' : form })

Это дает мне следующую ошибку:

rating_form() получил несколько значений аргумента ключевого слова form_type

Дополнительные детали:

Request Method: GET
Request URL:    http://127.0.0.1:8000/rate/lending/3/random-stuff/
Django Version: 1.4.1
Exception Type: TypeError
Exception Value:    
rating_form() got multiple values for keyword argument 'form_type'
Exception Location: /Library/Python/2.7/site-packages/django/contrib/auth/decorators.py in _wrapped_view, line 20
Python Executable:  /usr/bin/python

Что я делаю неправильно?


person whatf    schedule 24.11.2012    source источник


Ответы (1)


первый аргумент вашего представления должен быть request

person second    schedule 24.11.2012
comment
убейте меня за это, провел 3 f'in часа, пытаясь понять, что не так! - person whatf; 24.11.2012
comment
Так просто, но я уверен, что это спасло положение для тысячи человек. - person jball037; 24.02.2015
comment
Я снова и снова возвращаюсь к этому ответу. Спасибо. - person ioan; 04.01.2017
comment
(self, request, pk=None) в моем случае с пользовательским действием в фреймворке django rest. Спасибо - person Giancarlo Ventura; 24.05.2019