如何为每个项目设置n个图像

时间:2011-10-20 16:57:20

标签: python django

我有两个名为Tour and Agency的模型 每个巡回赛和每个代理商都可以有n张图片 我该如何实现呢? 我应该定义这样的模型:

class Gallery(models.Model):
    Image=models.ImageField(upload_to="gallery")

并将此字段添加到Tour和Agency模型中?如下所示:

Gallery=models.ForeignKey(Gallery)

如果我这样做,在添加每个巡演或代理商时,我们会在Gallery中列出所有图片 我只想为每个项目添加n个图像 我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

有几种不同的方法可以执行此操作,具体取决于您是否要在Tours和Agencies之间重新使用图像,以及是否有一个Image类或两个是否有意义。如果不了解您的用例,我可能会这样做:

class Gallery(models.Model):
    "Represents a set of images."
    # maybe a title or other fields?

class Image(models.Model):
    "Represents one image."
    # field names are usually lowercase, for clarity
    image = models.ImageField(upload_to="gallery")
    gallery = models.ForeignKey(Gallery, related_name='images')
    # you might want more fields here, e.g. title, alt_text, etc

class Tour(models.Model):
    gallery = models.OneToOneField(Gallery)

class Agency(models.Model):
    gallery = models.OneToOneField(Gallery)

这会设置一个名为Gallery的中间模型,TourAgency都可以参考。如果您希望每个GalleryTour允许多个Agency,或者如果您想在不同对象之间重新使用图库,则可以使用ForeignKey代替OneToOneField。如果您想在图库之间共享图片,可以在ManyToManyField课程中使用ForeignKey代替Image