2015-09-06 91 views
0

我想通过ModelForm在CreateView中创建一个新对象。我想让'玩家'实例拥有一张图片。但上传的图像不会被存储到'player_image'目录或写入数据库。Django创建视图图像上传

这些都是我的文件:

models.py:

class Player(models.Model): 
    last_name = models.CharField(max_length=255, verbose_name=_("Last Name")) 
    first_name = models.CharField(max_length=255, verbose_name=_("First Name")) 
    secret_name = models.CharField(max_length=255, verbose_name=_("Secret Key"), unique=True) 
    image = ImageField(upload_to='player_images/', verbose_name=_("Image"), null=True, blank=True) 

player_form.py

class PlayerForm(forms.ModelForm): 
    last_name = forms.CharField(required=True, label=_("Last Name")) 
    first_name = forms.CharField(required=True, label=_("First Name")) 

    class Meta: 
     model = Player 
     fields = ['first_name', 'last_name', 'image'] 

player_add_view.py

class PlayerAddView(LoginRequiredMixin, CreateView): 
    form_class = PlayerForm 
    template_name = "project/player_add_view.html" 
    model = Player 

def form_valid(self, form): 
    player = form.save(commit=False) 

    # I do other stuff here 
    player.save() 

    return HttpResponseRedirect(reverse('home')) 

回答

0

我不知道为什么它不工作,但在我的项目,它的作品,我是从发布请求获取图像,像这样:

profile_form = ProfileForm(data=request.POST) 
if profile_form.is_valid(): 
    if 'picture' in request.FILES: 
     current_user.image = request.FILES['image'] 
0

转到您的模板,并添加:

<form method="post" enctype="multipart/form-data">