我正在尝试使用get_file_path函数来生成动态路径。我可以在get_file_path中使用Album slug字段而不是此str(instance.id)吗?谢谢
以下是模型
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
发布于 2011-11-30 16:44:47
非常简单:str(instance.album.slug)
发布于 2011-11-30 15:30:36
可以,只需使用instance.slug而不是instance.id即可
你可以在post Change filename before save file in Django的答案中找到的另一个例子
更新:如果不是所有实例都有slug字段,那么您可能会对这样的解决方案感兴趣:
def get_file_path(instance, filename):
fld = getattr(instance, 'slug', instance.id)
return os.path.join('files', str(fld), filename)https://stackoverflow.com/questions/8322413
复制相似问题