Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 动态文件字段路径_Python_Django - Fatal编程技术网

Python 动态文件字段路径

Python 动态文件字段路径,python,django,Python,Django,我正在尝试使用get\u file\u path函数生成动态路径。我可以在get\u file\u path中使用Albumslug字段代替这个str(instance.id)?谢谢 这是模型 def get_file_path(instance, filename): return os.path.join('files', str(instance.id), filename) class Album(models.Model): name = models.CharFie

我正在尝试使用
get\u file\u path
函数生成动态路径。我可以在
get\u file\u 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
。它不起作用<代码>实例。slug在歌曲模型中不存在。它只存在于相册模型中(要使用
Album
Slug字段)
更新2:这里是model

是的,只需使用
instance.slug
而不是
instance.id

另一个例子可以在post的答案中找到

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

def get_file_path(instance, filename):
    fld = getattr(instance, 'slug', instance.id)
    return os.path.join('files', str(fld), filename)

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

我试过了,但没有成功<代码>实例。slug不存在于<代码>歌曲模型中。它只存在于
Album
model中,我想这是因为
get\u file\u path
Album.slug
收到值之前被调用了?!Tyrsa博士还有一件事。为什么它不起作用
str(instance.category.name)
。错误消息是
'Song'对象没有属性“category”
@没有访问权限,为什么它应该工作?:-)我在你的代码中没有看到
类别
。你是对的。此应用程序中没有
类别
。但它在不同的
应用程序中。但是我在专辑模型中使用了它。像
language=models.ForeignKey(Category)
@no\u access
str(instance.language.name)
'Song'对象没有属性'language'