Ah, stupid me. I just realized that the submit is being caught and handled using a JQuery .post() so the data isn't actually sent as multipart/form-data. I guess I need to do a bit more work in the submit code to make it responsive to the enctype. Can anyone tell me if this just won't work? The basic difference between the current situation and other file uploads that are part of the entire application is that, in this case, the file upload is in the context of a modal 'dialog' rather that a passive 'window'. I think I read somewhere that file uploads are handled using a stream after the POST is received.
Ragards the except handler, I simply put that there so that I could set a breakpoint if there was some sort of exception going on. So I do know that there isn't an exception being swallowed, the code isn't yet complete because I haven't been able to get the uploaded file to do anything with. On Thursday, April 4, 2013 5:38:58 PM UTC-4, John wrote: > > This is Django 1.5 > Python 2.7.3 > MYSQL Database > > Here is the model that I am using: > > class SupportingDocument(models.Model): > > """Defines an archived attachment.""" > > provision = models.ForeignKey(Provision, null = False, blank = False) > > submitted_by = models.CharField(max_length = 64, null = False, blank > = True, default = "") > > source_file_name = models.CharField(max_length = 256, null = False, > blank = False) > > content_type = models.CharField(max_length = 64, null = True, blank = > True, default = "") > > submission_time = models.DateTimeField() > > version = models.CharField(max_length = 32, null = True, blank = True, > default = "") > > comment = models.TextField(null = True, blank = True, default = "") > > saved_file = models.FileField(upload_to = "supporting_documents", > null = True, blank = True) > > > > def __init__(self, *args, **kwargs): > > super(SupportingDocument, self).__init__(*args, **kwargs) > > self.submission_time = datetime.today() > > > > def __unicode__(self): > > return self.source_file_name + ':' + unicode(self.submission_time) > > > and the form definition > > class SupportingDocumentForm(ModelForm): > > def __init__(self, *args, **kwargs): > > try: > > provision = None > > if 'provision' in kwargs: > > self.provision = kwargs.pop('provision') > > if 'user' in kwargs: > > self.submitted_by = kwargs.pop('user') > > except Exception, e: > > pass > > return super(SupportingDocumentForm, self).__init__(*args, > **kwargs) > > > > class Meta: > > model = SupportingDocument > > exclude = ('provision', 'submitted_by', 'source_file_name', > 'content_type', 'submission_time') > > > def save(self, request=None, commit=True): > > try: > > supporting_document = super(SupportingDocumentForm, > self).save(commit=False) > > supporting_document.source_file = self.source_file > > supporting_document.provision = self.provision > > supporting_document.submitted_by = self.submitted_by > > supporting_document.save() > > except Exception, e: > > provisionLogger.error('Failure:%s when supplementing group > details' %(repr(e))) > > > > def as_table(self): > > try: > > response = super(SupportingDocumentForm, self).as_table() > > except Exception, e: > > pass > > return response > > and the code to handle the request > > def supporting_document_new(request): > > current_tab = "Data" > > current_section = "SUPDOCS" > > action_url = urlresolvers.reverse('provision-supporting-document-new') > > if request.POST: > > try: > > form = SupportingDocumentForm(request.POST, > > request.FILES, > > provision=request.provision, > > user=request.user) > > if form.is_valid(): > > supporting_document = form.save() > > return redirect_to_url( > "provision-supporting-document-list") > > except Exception, e: > > modal_error_message = "Fatal error:" + repr(e) > > provisionLogger.error("Error saving Supporting Document %s" % > (supporting_document.source_file)) > > else: > > try: > > form = SupportingDocumentForm(provision=request.provision, > user=request.user) > > except Exception, e: > > pass > > return render_to_response("provision/suppdocform.html", locals(), > context_instance=RequestContext(request)) > > and the html for the form > > <p class="modal_form_header">Supporting Document <br/>{{ sourcefile }}</p> > > <form method="post" enctype="multipart/form-data" action="{{ action_url > }}" id="supporting_document_form" class="provision_modal_form" name= > "supporting_document_form"> > > <table class="provision_django_form_table"> > > {{ form.as_table }} > > <tr></tr> > > <tr style="width: 100%;"> > > <td colspan=2 style="width: 100%; text-align: center;"> > > <input type="submit" name="submit" value="Submit" id="submit" /> > > <span id="end_of_submit_block"></span> > > </td> > > </tr> > > <tr style="width: 100%;"> > > <td colspan=2 style="width: 100%; text-align: center;" class="errors"> > > {% if modal_error_message %} > > {{ modal_error_message }} > > {% else %} > > > > {% endif %} > > </td> > > </tr> > > </table> > > </form> > > <div>{% csrf_token %}</div> > > I am sure that there must be a problem with the html but this is driving > me crazy. Probably some stupid typo. > > When I set a breakpoint following the if request.POST the request.FILES is > an empty dictionary. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users?hl=en. For more options, visit https://groups.google.com/groups/opt_out.