2015-09-06 2 views
0

Я пытаюсь создать новый объект в CreateView через ModelForm. Я хочу, чтобы экземпляр «игрока» имел изображение. Но загруженное изображение не сохраняется в каталоге «player_image» или записано в БД.Django Create View Image Upload

Это мои файлы:

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')) 

ответ

5

Там может быть что-то недостающее, как request.FILES в views.py или ENCTYPE = «многочастному/форм-данных» в форме ,

Посмотрите здесь: https://docs.djangoproject.com/en/1.8/topics/http/file-uploads/

или увидеть это: https://godjango.com/35-upload-files/

+3

это был ENCTYPE = "многочастному/форм-данных" тег .. – Dominic

+0

Это enctype вещь ab *** h .. Я всегда забываю об этом. Благодарю. – MiniGunnR

+0

Спасибо, что сделал мой день! –

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">