2013-05-12 15 views
13

Jestem nowy w Django i próbuję prostego formularza. Mam model klasy "Profil" z pola pliku (schema_file) zdefiniowane, a także klasy ModelForm dla niego. Kiedy próbuję utworzyć nowy profil w przeglądarce, pojawia się błąd "To pole jest wymagane" w polu schema_file, mimo że wybrałem plik w selektorze plików, wszelkie pomysły? moje klasy poniżej:Uzyskiwanie "To pole jest wymagane", mimo że plik jest przesyłany

class Profile(models.Model): 
    class Meta: 
     db_table = 'target_profiles' 

    class SchemaType: 
     XML = 1 
     CSV = 2 
     XLS = 3 
     JSON = 4 
     DB = 5 
     SCHEMA_CHOICES = (
          (XML, 'XML'), 
          (CSV, 'CSV'), 
          (XLS, 'Excel'), 
          (JSON, 'JSON'), 
          (DB, 'Database'), 
         ) 

    name = models.CharField(max_length=32, unique=True) 
    description = models.CharField(max_length=128, null=True, blank=True) 
    schema_type = models.IntegerField(choices=SchemaType.SCHEMA_CHOICES, default=SchemaType.CSV) 
    schema_file = models.FileField(upload_to='schema_files', max_length=64) 


    def __unicode__(self): 
     return self.name 

class ProfileForm(forms.ModelForm): 
    class Meta: 
     model = Profile 

widok:

def add_profile(request): 
    if request.method == 'POST': 
     form = ProfileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      cd = form.cleaned_data 
      return HttpResponseRedirect('/profiles') 
    else: 
     form = ProfileForm() 
    return render(request, 'profiles/add_profile.html', {'form': form}) 

Odpowiedz

36

Jak nie napisali swój pogląd, mogę się tylko domyślać, jego ponieważ zapomniałeś obejmować request.FILES:

form = ProfileForm(request.POST, request.FILES) 

a może zapomniałem dodać do formularza enctype=multipart/form-data

+0

Przepraszam, dodano widok w pytaniu oryginalnym – michalv82

+0

Burhan, dziękuję za szybką odpowiedź. Brakowało mi dokładnie tego, co powiedziałeś. – michalv82

+0

To działa, dziękuję! –

Powiązane problemy