docs for django.core.files.File暗示我可以这样做:print File(open(path)).url,但是文件对象没有'url‘属性,然而,django.db.models.fields.files.FieldFile扩展了文件并拥有文件文档中描述的所有属性,但是如果不给它一个模型字段,我就不能创建一个。
我想要的就是像django.core.files.File文档(上面的链接)所说的那样,把一个python文件命名为'url‘,'path’和'name',有人能帮上忙吗?
干杯,杰克
发布于 2010-04-16 10:04:47
不管Django文档是怎么说的,如果你看一下File类的代码,我看不到它。遵循Ignacio的建议,您可以从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)发布于 2010-04-16 09:45:04
如果你派生自file,那么你可以赋予它任何你喜欢的属性:
class MyFile(file):
def foobar(self):
print 'foobar'
f = MyFile('t.txt', 'r')
f.foobar()发布于 2010-04-16 12:37:08
谢谢你们。我已经通过编写一个自定义类解决了我的问题,如果我可以使用它,它不会像Django类那样强大,但它适用于我当前的应用程序。我会开一张关于医生的罚单。
https://stackoverflow.com/questions/2650072
复制相似问题