как иметь n изображений для каждого элемента - PullRequest
0 голосов
/ 20 октября 2011

У меня есть 2 модели под названием Тур и Агентство каждый тур и каждое агентство может иметь n изображений как я могу это реализовать? я должен определить модель как это:

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

и добавить это поле в модели тура и агентства? Например:

Gallery=models.ForeignKey(Gallery)

Если я это сделаю, при добавлении каждого тура или агентства у нас будет список всех изображений в галерее Я просто хочу добавить n изображений для каждого элемента как я могу это сделать?

1 Ответ

3 голосов
/ 20 октября 2011

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

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...