2013-05-12 21 views
13

Tôi mới ở Django và đang thử một biểu mẫu đơn giản. Tôi có một mô hình lớp "Hồ sơ" với một lĩnh vực tập tin (schema_file) được định nghĩa và cũng là một lớp ModelForm cho nó. Khi tôi cố tạo hồ sơ mới trong trình duyệt, tôi gặp lỗi "Trường này là bắt buộc" trên trường schema_file mặc dù tôi đã chọn tệp trong trình chọn tệp, có ý tưởng nào không? lớp học của tôi dưới đây:Nhận "Trường dữ liệu này là bắt buộc" ngay cả khi tệp được tải lên

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 

xem:

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

Trả lời

36

Như các bạn đã không đăng tải quan điểm của bạn, tôi chỉ có thể đoán nó vì bạn quên bao gồm request.FILES:

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

Và có lẽ quên thêm enctype=multipart/form-data vào biểu mẫu của bạn.

+0

xin lỗi, đã thêm chế độ xem trong câu hỏi gốc – michalv82

+0

Burhan, cảm ơn phản hồi nhanh của bạn. Tôi đã thiếu chính xác những gì bạn nói .. – michalv82

+0

Điều này hoạt động, cảm ơn! –

Các vấn đề liên quan