django 表单为关键字参数获取了多个值

Posted

技术标签:

【中文标题】django 表单为关键字参数获取了多个值【英文标题】:django form got multiple values for keyword argument 【发布时间】:2012-11-12 17:29:38 【问题描述】:

我有一个简单的模型如下:

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(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

我做错了什么?

【问题讨论】:

【参考方案1】:

视图的第一个参数应该是request

【讨论】:

为此杀了我,花了 3 f'in 小时努力解决问题! 如此简单,但我相信这为一千人节省了一天。 我一次又一次地来到这个答案。谢谢。 (self, request, pk=None) 在我的例子中,在 django rest 框架中有一个自定义操作。谢谢 救了我的命!!

以上是关于django 表单为关键字参数获取了多个值的主要内容,如果未能解决你的问题,请参考以下文章

Django:表单验证:一个字段接受多个值

动态表单抱怨“步数”作为意外的关键字参数

Django 动态过滤 ListView 返回错误:get() 为参数“self”获取了多个值

错误 - 类型错误 DeclartativeMeta 对象为关键字参数“owner_id”获得了多个值

是否可以将关键字参数传递给 Django % url % 模板标签?关键字参数值应该来自 html 标签

59 Django基础三件套 , 模板{{}}语言 , 程序连mysql Django项目app Django中ORM的使用