2012-11-24 38 views
21

kelime argüman için birden fazla değer var:Django formu basit bir modele sahip

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) 

manken formu oluşturmak Yukarıdaki modelde itibaren benim forms.py aşağıdaki şekilde:

class RatingForm(ModelForm): 

    class Meta: 
      model = Rating 
      exclude = ('from_user', 'dtobject', 
        'shared_object') 
url(r'^rate/(?P<form_type>[\w]+)/(?P<oid>\d+)/(?P<oslug>[\w-]+)/$', 'rating_form', name='rating_form'),      

Ve görünümlerinde

aşağıdaki: benim URL'ler olarak

ben aşağıdakileri deneyin

rating_form() anahtar kelime argüman 'form_type'

Ek Detaylar için birden fazla değer var

:

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 

Ben ne yapıyorum

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

Bunu yapmak bana aşağıdaki hatayı veriyor yanlış?

cevap

87

görünümünüze ilk argüman request

+15

* Bu * için beni öldürmek olmalı, neyin yanlış olduğunu mücadele saat f'in 3 geçirmişti! – whatf

+9

Çok basit, ama eminim ki bu bin insan için günü kurtardı. – jball037

+1

Bu cevap için tekrar tekrar geliyorum. Teşekkür ederim. – ioanb7

İlgili konular