I found the answer in this discussion: http://groups.google.com/group/django-users/browse_frm/thread/184e5e09db1efce4/7816cbc650d8dc77
Pass in the filename and content to the FileField's save() method directly, rather than using the model instance's save() method. On Dec 14, 2:24 pm, Brian S <bstan...@.com> wrote: > Could someone point me in the right direction on how to save a file > object to a FileField in a model? When I try assigning the file object > directly to the FileField field, I get an atrribute error: > > myfile = open('/home/sample.txt', 'wb') > mymodelinstance.resultFile=myfile > mymodelinstance.save() > > --------------------------------------------------------------------------- > AttributeError Traceback (most recent call > last) > > /home/bstanley/projects//<ipython console> in <module>() > > /home/bstanley/projects//bdap/models.pyc in save(self) > 799 super( Report, self ).save() > 800 self.serialNumber += '-' + str( self.id ) > --> 801 super( Report, self ).save() > 802 > 803 def __unicode__( self ): > > /usr/lib/python2.5/site-packages/django/db/models/base.py in save > (self, force_insert, force_update) > 408 raise ValueError("Cannot force both insert and > updating in " > 409 "model saving.") > --> 410 self.save_base(force_insert=force_insert, > force_update=force_update) > 411 > 412 save.alters_data = True > > /usr/lib/python2.5/site-packages/django/db/models/base.py in save_base > (self, raw, cls, origin, force_insert, force_update) > 471 # It does already exist, so do an UPDATE. > 472 if force_update or non_pks: > --> 473 values = [(f, None, (raw and getattr > (self, f.attname) or f.pre_save(self, False))) for f in non_pks] > 474 rows = manager.filter > (pk=pk_val)._update(values) > 475 if force_update and not rows: > > /usr/lib/python2.5/site-packages/django/db/models/fields/files.py in > pre_save(self, model_instance, add) > 248 "Returns field's value just before saving." > 249 file = super(FileField, self).pre_save(model_instance, > add) > --> 250 if file and not file._committed: > 251 # Commit the file to storage prior to saving the > model > 252 file.save(file.name, file, save=False) > > AttributeError: 'file' object has no attribute '_committed' > --------------------------------------------------------------------------- > > Checking the type of this field in another instance of this model, I > see that it is a FieldFile object: > > type(anotherinstance.resultFile) > > >> <class 'django.db.models.fields.files.FieldFile'> > > ...So I'm assuming I need to construct a FieldFile object from my file > object, then assign that to mymodelinstance.resultFile and then save > (), but I'd like to make sure this is the preferred approach before > going forward. > > Thanks. > Brian -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.