Ответ 1
Поскольку вы не разместили свое мнение, я могу только догадаться, потому что вы забыли включить request.FILES
:
form = ProfileForm(request.POST, request.FILES)
И, возможно, забыли добавить enctype=multipart/form-data
в вашу форму.
Я новичок в Django и пробую простую форму. У меня есть модельный класс "Профиль" с определенным файловым полем (schema_file), а также классом ModelForm. Когда я пытаюсь создать новый профиль в браузере, я получаю сообщение об ошибке "Это поле обязательно" в поле schema_file, хотя я выбрал файл в файле chooser, любые идеи? мои классы ниже:
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
Вид:
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})
Поскольку вы не разместили свое мнение, я могу только догадаться, потому что вы забыли включить request.FILES
:
form = ProfileForm(request.POST, request.FILES)
И, возможно, забыли добавить enctype=multipart/form-data
в вашу форму.