Как я могу использовать django.core.files.File - PullRequest
2 голосов
/ 16 апреля 2010

Документы для django.core.files.File подразумевают, что я могу сделать это: print File(open(path)).url, но объект File не имеет атрибута 'url'. Однако django.db.models.fields.files. FieldFile расширяет File и имеет все атрибуты, описанные в документах для File, но я не могу создать его, не предоставив ему поле модели.
Все, что мне нужно, это то, что делает то, что говорят документы django.core.files.File (ссылка выше), берет файл python и присваивает ему такие атрибуты, как «url», «path» и «name», может кто-нибудь помочь

Ура, Джейк

Ответы [ 3 ]

2 голосов
/ 16 апреля 2010

Независимо от того, что говорит документ Django, если вы посмотрите на код для класса File, я не вижу его там. Следуя совету Игнасио, вы можете использовать Django File и использовать настройки MEDIA_ROOT и MEDIA_URL для реализации свойства, которое вы ищете ...

from django.core.files import File
from django.conf import settings

class UrlFile(File):
    def _get_url(self):
        root_name = self.name.replace(settings.MEDIA_ROOT, '')
        return '%s%s' % (settings.MEDIA_URL, root_name)
    url = property(_get_url)
0 голосов
/ 16 апреля 2010

Спасибо, ребята. Я решил свою проблему, написав собственный класс, он не такой мощный, как Django, если бы я мог его использовать, но он работает для моего текущего приложения. Я открою билет на документы.

0 голосов
/ 16 апреля 2010

Если вы наследуете от file, вы можете присвоить ему любые атрибуты, которые вам нравятся:

class MyFile(file):
  def foobar(self):
    print 'foobar'

f = MyFile('t.txt', 'r')
f.foobar()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...