2013-05-12 31 views
13

Django'da yeniyim ve basit bir form deniyorum. Tanımlanmış bir dosya alanı (schema_file) ve bunun için bir ModelForm sınıfı olan bir model sınıf "Profilim" var. Tarayıcıda yeni bir profil oluşturmaya çalıştığımda, dosya seçicisinde bir dosya seçtiğim halde, herhangi bir fikir olsa da, schema_file alanında "Bu alan gereklidir" hatası alıyorum. Aşağıda benim sınıfları:Dosya yüklüyse bile "Bu alan gereklidir" Olma

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 

görünümü:

Eğer görünümünü yayınlanmıştır değil gibi
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}) 

cevap

36

, sen request.FILES eklemeyi unuttuğu için ben yalnızca kendi tahmin edebilirsiniz:

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

Ve belki formunuza enctype=multipart/form-data eklemeyi unuttuysanız.

+0

Üzgünüz, görünümü özgün soru olarak ekledi – michalv82

+0

Burhan, hızlı yanıtınız için teşekkürler. Tam olarak ne dediğini kaçırıyordum .. – michalv82

+0

Bu, teşekkürler! –

İlgili konular