Администратор Django - путаница «многие ко многим» - PullRequest
1 голос
/ 26 мая 2010

Я учу себя Django и создаю сайт личного портфолио. Я установил модель с именем FolioItem , которая использует отношение «многие ко многим» с другой моделью с именем FolioImage . Идея заключается в том, что каждый FolioItem может иметь множество FolioImages.

class FolioImage(models.Model):
    image = models.FileField(upload_to='portfolio_images')
    def __unicode__(self):
        return self.image.name

class FolioItem(models.Model):
    title = models.CharField(max_length=50)
    thumbnail = models.FileField(upload_to='portfolio_images')
    images = models.ManyToManyField(FolioImage)
    def __unicode__(self):
        return self.title

В интерфейсе администратора Django я могу создавать новые FolioItem, но в поле изображений (многие ко многим относятся к FolioImage) отображаются все существующие FolioImage, добавленные ранее к другим FolioItem.

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

Кроме того, кажется, что когда я пытаюсь отредактировать существующую запись, я не могу добавить или удалить ассоциации FolioImage (маленький зеленый значок + отсутствует).

Любой совет был бы великолепен.

Ответы [ 2 ]

1 голос
/ 26 мая 2010

Я думаю, что вы используете неправильные отношения здесь. Если вы хотите, чтобы FolioImages принадлежал только одному FolioItem, вам следует использовать ForeignKey из FolioImage в FolioItem. Затем вы можете настроить интерфейс администратора так, чтобы отображать связанные изображения для элемента в виде встроенных наборов форм, что позволит вам добавлять и редактировать только изображения для этого элемента.

1 голос
/ 26 мая 2010

Есть ли способ заставить это селектор должен быть пустым при создании новый предмет?

Я думаю, вы немного смущены интерфейсом по умолчанию для выбора нескольких виджетов. Он показывает вам все существующие изображения, делая их доступными для выбора, но нет никакой связи с новым элементом. Вы должны фактически щелкнуть по элементу или выполнить трюк со сдвигом (или элемент управления), чтобы выбрать несколько элементов, а затем сохранить элемент фолио, чтобы установить связь.

Кроме того, кажется, когда я пытаюсь редактировать существующая запись, которую я не могу добавить или удалить ассоциации FolioImage ( маленький зелёный + значок отсутствует).

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

Вас также может заинтересовать использование холодного горизонтального или вертикального фильтра Django вместо стандартного интерфейса выбора нескольких объектов. Вы также можете использовать встроенный интерфейс. Более подробная информация: здесь и здесь . Я думаю, что интерфейс фильтра гораздо более интуитивно понятен.

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