我有两个名为Tour and Agency的模型 每个巡回赛和每个代理商都可以有n张图片 我该如何实现呢? 我应该定义这样的模型:
class Gallery(models.Model):
Image=models.ImageField(upload_to="gallery")
并将此字段添加到Tour和Agency模型中?如下所示:
Gallery=models.ForeignKey(Gallery)
如果我这样做,在添加每个巡演或代理商时,我们会在Gallery中列出所有图片 我只想为每个项目添加n个图像 我怎么能这样做?
答案 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
的中间模型,Tour
和Agency
都可以参考。如果您希望每个Gallery
或Tour
允许多个Agency
,或者如果您想在不同对象之间重新使用图库,则可以使用ForeignKey
代替OneToOneField
。如果您想在图库之间共享图片,可以在ManyToManyField
课程中使用ForeignKey
代替Image
。