首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态FileField路径

动态FileField路径
EN

Stack Overflow用户
提问于 2011-11-30 15:19:00
回答 2查看 168关注 0票数 0

我正在尝试使用get_file_path函数来生成动态路径。我可以在get_file_path中使用Album slug字段而不是此str(instance.id)吗?谢谢

以下是模型

代码语言:javascript
复制
def get_file_path(instance, filename):
    return os.path.join('files', str(instance.id), filename)

class Album(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(unique = True,max_length=100,help_text="Suggested value automatically generated from name. Must be unique.")
    path = models.CharField(max_length=100,null=True, blank=True)
    language = models.ForeignKey(Category)
    albumid = models.CharField(max_length=100)

class Song(models.Model):
    title = models.CharField(max_length=100)
    artist = models.ManyToManyField(Artist)
    music = models.ForeignKey(Music)
    album = models.ForeignKey(Album)
    file = models.FileField(upload_to=get_file_path)

更新:我试过instance.slug。它不工作。instance.slug在歌曲模型中不存在。它只存在于专辑模型中(希望使用Album Slug字段) Update2:这是模型snapshot

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-30 16:44:47

非常简单:str(instance.album.slug)

票数 2
EN

Stack Overflow用户

发布于 2011-11-30 15:30:36

可以,只需使用instance.slug而不是instance.id即可

你可以在post Change filename before save file in Django的答案中找到的另一个例子

更新:如果不是所有实例都有slug字段,那么您可能会对这样的解决方案感兴趣:

代码语言:javascript
复制
def get_file_path(instance, filename):
    fld = getattr(instance, 'slug', instance.id)
    return os.path.join('files', str(fld), filename)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8322413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档