0

我正在使用 django 设计一个网站。网站的想法是拥有摄影师,每个摄影师都有一个或多个相册,每个相册都有一张或多张照片。目前我有:

class Photo(models.Model):
    name=models.ForeignKey('Album')
    p=models.ImageField()
    def __unicode__(self):
        return self.name
class Album(models.Model):
    name=models.ForeignKey('Photographer')
    def __unicode__(self):
        return self.name
class Photographer(models.Model):
    name=models.ForeignKey('User')
    def __unicode__(self):
        return self.name

问题是如果您有相同的设计,您是否会为每个摄影师创建一个目录,并为每个相册在父目录中创建另一个目录,然后将照片存储在该相册的目录中或将它们存储在数据库中。我知道这是一个新手问题,但我真的需要帮助。如果您有其他设计可以让我更轻松,请告诉我。

提前致谢, 阿卜杜勒

4

3 回答 3

2

使用图像域将所有照片存储在一个地方,甚至更好地将它们存储在云存储服务中。而关于相册和摄影师的Photo模型中的ForeignKeys的关系。比使用反向关系找出每个相册或摄影师的照片。

您的代码可能如下所示

class Photo(models.Model):
image = ImageField(upload_to="whereever you want to")
album = ForeignKey(Album)
photographer=ForeignKey(Photographer)

获得特定相册后,您可以使用 Album.set_all 和 Photographer.set_all 获取特定相册或摄影师的所有照片

`

于 2012-12-01T06:20:40.567 回答
1

是的,将照片直接存储在文件系统中,而不是数据库中。这是一种常见的做法,有很多原因,主要与性能有关。

如果您希望拥有成千上万张照片,则不要将它们保存在一个目录中,因为这可能会导致流行系统出现性能问题。相反,设计一个适合您的应用程序的简单层次结构。

于 2012-12-01T02:33:16.910 回答
0

无需为摄影师或相册创建目录。这就是数据库的用途。您可以拥有一个巨大的文件夹(在 中指定upload_to),其中将包含所有上传的所有摄影师和相册的图像,然后使用数据库来跟踪哪些照片属于哪个摄影师/相册。

顺便说一句,您应该upload_to为 指定参数ImageField

models.ImageField(upload_to='images/')

如果您真的想为每个专辑创建文件夹,您可以将一个函数传递给upload_to参数并在其中添加您想要的任何逻辑...更多信息请参见此处的文档。

于 2012-12-01T02:34:02.483 回答