MyModelForm'对象没有属性'用户使用django

时间:2017-04-17 20:21:59

标签: python django python-2.7 django-forms django-views

我想创建一个简单的django图像处理。首先,我在我的应用程序中创建了正确的django auth和多个上传图像。 现在我希望用户可以从我创建的列表django表单中选择一个自我图像,并为我的处理选择该图像。我创建了一些但不起作用。

我接受了这个错误:

'MyModelForm' object has no attribute 'user'

这里是代码:

views.py

@login_required(login_url="login/")
def myview(request):
    Myf = MyModelForm(request.user,request.POST)
    return render(request,'home.html',{'Myf':Myf})

forms.py

class MyModelForm(ModelForm):
    def __init__(self, *args, **kwargs):
        if 'user' in kwargs:
            self.user = kwargs.pop('user')
        super(MyModelForm, self).__init__(*args, **kwargs)
        choices = [(obj.id, obj.upload.url) for obj in MyModel.objects.filter(user=self.user)]
        self.fields['upload'].widget = Select(choices=choices)

    class Meta:
        model = MyModel
        fields = ('upload',)

如果我用Myf = MyForm(request.user,request.POST)替换Myform = MyModelForm(user=request.user),那么我认为列表就像这样工作

image list

但我不能选择图像进行图像处理。

html:

   <form class="" action="" method="post" enctype="multipart/form-data">
    {% csrf_token %}
      {{ Myform}}
    <input type="submit" name="" value="Submit">

  </form>

任何想法?

1 个答案:

答案 0 :(得分:2)

您的MyForm类在user方法的签名中没有__init__,因此您需要在实例化表单时将其作为关键字参数提供:

MyForm(user=request.user,data=request.POST)