Est-ce que quelqu'un sait pourquoi mon formulaire (filepicker) retourne constamment "ce champ est requis" quand il travaillait dans une version plus simple?Pourquoi mon formulaire Django dit-il "ce champ est obligatoire"
Mon point de vue est
def add_attempt(request, m_id, a_id):
template = loader.get_template('add_attempt.html')
if request.method == 'POST':
import pprint
pprint.pprint(request.POST)
pprint.pprint(request.FILES)
form = UploadAttemptForm(data=request.POST, files=request.FILES)
if form.is_valid():
form.instance.pub_date = datetime.datetime.now()
form.instance.user_id = request.user
form.instance.assignment = m.Assignment.objects.get(id=a_id)
form.save()
return HttpResponseRedirect(reverse('assignment', args=(m_id, a_id)))
else:
print form.errors
else:
form = UploadAttemptForm()
context = RequestContext(request,
{
'form':form,
})
return HttpResponse(template.render(context))
Mon modèle est
class Attempt(models.Model):
user_id = models.ForeignKey(User)
pdf_filename = models.FileField(storage=settings.S3_STORAGE, upload_to='pdfs')
pub_date = models.DateTimeField('date uploaded')
assignment = models.ForeignKey(Assignment)
Et ma forme est
class UploadAttemptForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(UploadAttemptForm, self).__init__(*args, **kwargs)
class Meta():
model = Attempt
fields = ['pdf_filename',]
Les impressions d'erreur sur les
`<QueryDict: {u'submit': [u'Upload Attempt'], u'pdf_filename': [u'something.pdf']}>`
<MultiValueDict: {}>
<ul class="errorlist"><li>pdf_filename<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
Avez-vous ajouté le '' enctype = multipart/form-data'' à votre élément ''
PARFAIT! Merci un million. Malheureusement, comme je ne comprenais pas complètement comment les formulaires fonctionnaient dans Django, je ne l'ai pas remarqué. Merci encore et si vous voulez faire une réponse complète, je vais accepter cela. – bungleofsketches
Cool! J'ai ajouté une bonne réponse. J'avais utilisé un commentaire en premier lieu parce que je n'avais pas vu votre template (mais oublier '' enctype'' est une erreur commune, il m'a mordu une ou deux fois aussi) – Serafeim