Есть несколько различных способов сделать это, в зависимости от того, хотите ли вы повторно использовать изображения между турами и агентствами, и имеет ли смысл иметь один или два класса изображений.Не зная больше о вашем случае использования, я мог бы сделать это следующим образом:
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
.