déjame ponerlo de esta manera:El método Django FileField (o ImageField) open() devuelve Ninguno para el archivo válido?
model.py:
class Task(models.Model):
...
seq_file = models.FileField(upload_to='files/', blank=True, null=True)
...
ajax.py (estoy usando dajaxice pero no importa):
...
def startTask(request, name):
task = Task.objects.get(task_name=name)
data = task.seq_file.open()
filename = os.path.join(settings.MEDIA_ROOT ,task.seq_file.name)
if not os.path.isfile(filename):
raise Exception, "file " + filename + " not found."
sequences = parser.parse(data.read())
...
Esto devuelve :
File "/home/mnowotka/Dokumenty/MgrFuncAdnot/app/django-gui/src/gui/ajax.py", line 43, in startTask
sequences = parser.parse(data.read())
AttributeError: 'NoneType' object has no attribute 'read'
pero:
...
def startTask(request, name):
task = Task.objects.get(task_name=name)
filename = os.path.join(settings.MEDIA_ROOT ,task.seq_file.name)
if not os.path.isfile(filename):
raise Exception, "file " + filename + " not found."
data = open(filename)
sequences = parser.parse(data.read())
...
funciona a la perfección! ¿Por qué?
(estoy usando Django 1.3)
Entonces, ¿cuál es el propósito de FileField open()? – mnowotka
Lamentablemente, la documentación de Django es actualmente engañosa en este punto: "Se comporta como el método estándar Python open() ..." - https: //docs.djangoproject.com/en/1.4/ref/models/fields/# filefield-and-fieldfile No, devolver None después de realizar una misteriosa operación de apertura interna no es el comportamiento estándar de Python. –
debería plantear un problema al respecto. – laike9m