我想创建一个简单的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)
,那么我认为列表就像这样工作
但我不能选择图像进行图像处理。
html:
<form class="" action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ Myform}}
<input type="submit" name="" value="Submit">
</form>
任何想法?
答案 0 :(得分:2)
您的MyForm
类在user
方法的签名中没有__init__
,因此您需要在实例化表单时将其作为关键字参数提供:
MyForm(user=request.user,data=request.POST)