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/buildfax/<ipython console> in <module>()

/home/bstanley/projects/buildfax/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.


Reply via email to