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

2024-06-16 18:47:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模型名为旅游和代理 每个旅行社可以有n张图片 我该如何实现这一点? 我应该这样定义一个模型:

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

将此字段添加到旅游和代理模型中?像这样:

Gallery=models.ForeignKey(Gallery)

如果我这样做,当添加每个旅游团或机构,我们有在画廊的所有图像列表 我只想为每个项目添加n个图像 我该怎么做?你知道吗


Tags: to模型图像image代理model定义models
1条回答
网友
1楼 · 发布于 2024-06-16 18:47:28

有几种不同的方法可以做到这一点,这取决于您是否希望在旅游团和旅行社之间重复使用图像,以及使用一个或两个图像类是否合理。在不了解更多用例的情况下,我可能会这样做:

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都可以引用。如果希望每个TourAgency允许多个Gallery,或者希望在不同对象之间重用库,则可以使用ForeignKey而不是OneToOneField。如果希望在库之间共享图像,可以使用ManyToManyField而不是Image类中的ForeignKey。你知道吗

相关问题 更多 >