繁体   English   中英

如何在Django模型中引用其他对象

[英]How do I reference the other object in django models

在Django中,我希望有许多文件与特定模型关联,因此我正在做一个单独的模型,称为文件,并且模型“ A”“有很多”文件。 但我希望将文件保存在型号为“ A”的导演中。 因此,例如,我想要这样的东西:

class Show(models.Model):
     name = models.CharField()
     showfolder = models.FilePathField()

class Episode(models.Model):
     show = models.ForeignKey(Show)
     name = models.CharField()
     files = models.ManyToManyField(mp3)

class Mp3(models.Model):
     file = FileField(upload_to=Episode.show.showfolder)

因此,希望最后一行表示我想要执行的操作(从与该情节关联的Show对象获取文件夹名称)。 问题是我该怎么写呢?(除了跳过控制器中的铁环。)

谢谢。

在当前模型中,由于与MP3有关的Episode ManyToMany关系,一个文件可能与一个或多个情节相关联。 这意味着您的文件将必须同时存在于多个位置。

要具有层次结构,您需要在Mp3模型中使用ForeignKey插入Episode:

class Mp3(Model):
     episode = ForeignKey(Episode)

现在关于您的文件名。 根据django文档upload_to属性可以接受callable并将其传递两个参数: instancefilename

def get_file_name(instance, original_filename):
    return os.path.join(MEDIA_ROOT, 'mp3', instance.episode.show.showfolder,     
                        original_filename)

class Mp3(Model):
     file = FileField(upload_to=get_file_name)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM