は、私はこのようにそれを置くましょう:Django FileField(またはImageField)open()メソッドは、有効なファイルに対してNoneを返しますか?
model.py:
class Task(models.Model):
...
seq_file = models.FileField(upload_to='files/', blank=True, null=True)
...
ajax.py(私はdajaxiceを使用していますが、それは問題ではありません):
...
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())
...
このリターン:
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'
しかし:
...
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())
...
は完全に機能します。 なぜですか?
(私はジャンゴ1.3を使用しています)
FileField open()の目的は何ですか? – mnowotka
残念ながら、Djangoのドキュメントは現在、この点について誤解を招いています: "標準的なPythonのopen()メソッドのように動作します..." - https://docs.djangoproject。 不思議な内部オープン操作を実行した後に「なし」を返すことは、標準的なPythonの動作ではありません。 –
はこれに関する問題を提起するはずです。 – laike9m