【问题标题】:MyModelForm' object has no attribute 'user using djangoMyModelForm'对象没有属性'用户使用django
【发布时间】:2017-09-13 12:21:48
【问题描述】:

我想创建简单的 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',)

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

image list

但我无法选择图像进行图像处理。

html:

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

  </form>

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 如果我在 html 中使用您的建议,我会收到该消息 No file was submitted. Check the encoding type on the form.,如果我尝试打印 MyForm,那么我不会在控制台中拍摄特定图像,我会使用 html 页面更新我的问题跨度>
    • handle uploads,您需要files=request.FILESdata=request.POST。如果仍有问题,请提出新问题,而不是添加 cmets。
    • 你已经接受了我对这个问题的回答,所以没有人会看到你更新的问题。您的新问题有所不同,因此您应该提出一个新问题,而不是编辑这个问题。
    • 是的,如果你能再次关注我,我会创建新问题
    猜你喜欢
    • 2020-03-10
    • 2011-12-14
    • 2018-08-09
    • 1970-01-01
    • 2020-01-12
    • 2019-06-23
    • 2016-02-02
    • 2018-02-15
    • 2015-04-04
    相关资源
    最近更新 更多