2017-04-16 76 views
0

选择请求我做了一个选择django形式与每个用户的图像列表。从django从

如何在我的views.py中选择请求?

我只设法创建正确的选择列表,但我需要采取该选择请求。但我不知道如何。

models.py

class MyModel(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    upload = models.ImageField(upload_to='upload') 

views.py

@login_required(login_url="login/") 
    def carlist(request): 
     Myform = MyModelForm(user=request.user) 
     return render(request,'about.html',{'Myform':Myform}) 

选择django的形式:

class MyModelForm(ModelForm): 
    def __init__(self, *args, **kwargs): 
     # extract "user" from kwrags (passed upon form init) 
     if 'user' in kwargs: 
      self.user = kwargs.pop('user') 
     super(MyModelForm, self).__init__(*args, **kwargs) 
     # generate the choices as (display, value). 
     # Display is the one that'll be shown to user, value is 
     # the one that'll be sent upon submitting 
     # (the "value" attribute of <option>) 
     choices = MyModel.objects.filter(user=self.user).values_list('upload', 'id') 
     self.fields['upload'].widget = Select(choices=choices) 

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

HTML:

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

例如Myform现在有一个用户图像列表,这是正确的,但之后,我需要从窗体中选择的图像。

可以用我的代码来做到吗?

回答

0

是的,你可以用你的代码做到这一点。在你看来,你可以得到它:

class MyView(View): 
    def post(self, request): 
     form = MyModelForm(request.POST, request.FILES) 
     if form.is_valid(): 
       upload_inst = form.cleaned_data['upload'] 
       ...   

这会给你从表单中选择的图像。

如果你想有被选择的多张图片,你可以尝试以下方法: