2013-05-12 3 views
13

Ich bin neu bei Django und versuche eine einfache Form. Ich habe eine Modellklasse "Profile" mit einem Dateifeld (schema_file) definiert und auch eine ModelForm-Klasse dafür. Wenn ich versuche, ein neues Profil im Browser zu erstellen, erhalte ich die Fehlermeldung "Dieses Feld ist erforderlich" im Feld "schemeldatei", obwohl ich eine Datei in der Dateiauswahl ausgewählt habe. meine Klassen unter:Getting "Dieses Feld ist erforderlich", obwohl die Datei hochgeladen wird

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 

Ansicht:

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

Antwort

36

Wie Sie die Ansicht nicht gebucht haben, kann ich nur seine erraten, weil Sie request.FILES nicht mit einberechnet:

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

Und vielleicht vergessen, enctype=multipart/form-data zu Ihrem Formular hinzuzufügen.

+0

Entschuldigung, fügte die Ansicht in Originalfrage – michalv82

+0

Burhan, danke für Ihre schnelle Antwort. Ich habe genau das vermisst, was du gesagt hast. – michalv82

+0

Das funktioniert, danke! –

Verwandte Themen