ИМ
22 декабря 2018 г. 6:44
Подскажите по фильтрации объектов в админ-панели
Доброго времени суток. У меня ситуация следующая, имею 3 модели которые принадлежат один ко многим:
- class Serial(models.Model):
- class Meta:
- db_table = 'serial'
- verbose_name = 'Сериал'
- verbose_name_plural = 'Сериалы'
- name = models.CharField(verbose_name='Название', max_length=200)
- orig_name = models.CharField(verbose_name='Оригинальное название', max_length=200, blank=True)
- poster = models.ImageField(
- # upload_to=curry(upload_to_media, prefix='posters'),
- upload_to=upload_to_media,
- blank=True,
- verbose_name='Постер'
- )
- category = models.ForeignKey(CategorySerial, on_delete=models.CASCADE, verbose_name='Категория', null=True, blank=True)
- year = models.DateField(verbose_name='Дата выхода', default='2000-01-01')
- country = models.CharField(verbose_name='Страна', max_length=300, default='Неизвестно')
- translate = models.CharField(verbose_name='Перевод', max_length=300, default='Русский')
- create = models.DateTimeField(verbose_name='Дата публикации', default=timezone.now)
- update = models.DateTimeField(verbose_name='Дата обновления', default=timezone.now)
- description = models.TextField(verbose_name='Описание')
- moder = models.BooleanField(verbose_name='Модерация', default=False)
- votes = GenericRelation(LikeDislike, related_query_name='serials')
- def public(self):
- self.date = timezone.now()
- self.save()
- def __str__(self):
- return self.name
- def get_absolute_url(self):
- return reverse('serial:serial_detail', args=[self.id])
- def get_bookmark_count(self):
- return self.bookmarkserial_set.all().count()
- class Playlist(models.Model):
- class Meta:
- db_table = 'playlist'
- verbose_name = 'Плейлист'
- verbose_name_plural = 'Плейлисты'
- name = models.CharField(max_length=250, verbose_name='Имя плейлиста')
- serial = models.ForeignKey(Serial, on_delete=models.CASCADE)
- def __str__(self):
- return self.name
- class Seria(models.Model):
- class Meta:
- db_table = 'seria'
- verbose_name = 'Серия'
- verbose_name_plural = 'Серии'
- playlist = models.ForeignKey(Playlist, on_delete=models.CASCADE)
- serial = models.ForeignKey(Serial, on_delete=models.CASCADE)
- video = models.FileField(
- # upload_to=curry(upload_to_media, prefix='movies'),
- upload_to=upload_to_media,
- verbose_name='Видео'
- )
В админ панели ситуация следующая:
Создал я плейлист в одной сериале, и добавляя видео в другом сериале у меня плейлисты с предыдущего
Вопрос заключается в следующем: как отображать плейлисты только принадлежащие к определенному сериалу а не весь список плейлистов.
2
100
Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Последние комментарии
- AK1 апреля 2025 г. 11:41Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VP9 марта 2025 г. 16:14Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМ22 ноября 2024 г. 21:51Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Сейчас обсуждают на форуме
- f15 февраля 2025 г. 13:46Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
- Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Добрый день.
Это делается через установку кастомной формы для model.Admin
Смысл в том, чтобы в соответствующем поле отфильтровать только те серии, или плейлисты, которые отностятся к данном сериалу
По идее так должно работать правильно.
Так то оно работает, но я использую Inline. В inline не хочет, пишет:
Ну, полагаю, что весь прикол в том, что здесь просто не обработано это исключение. Поскольку при создании нового объекта там никакой объект не создан.
А если так? Нужно тогда обработать это исключение и всё
Там скорее всего понадобится сначала установить сериал, сохранить все объекты, а потом уже появится возможность выбора плейлистов.
Дальше я бы покопал в сторону обновления queryset плейлистов в случае изменения внешнего ключа на сериал.
Я ошибся. Вышеуказанные формы не работают.
А с добавлением except Seria.serial.RelatedObjectDoesNotExist: пропускает ошибку, и в выпадающем списке все плейлисты.
Возможно, тогда стоит установить пустой queryset в том случае если нет внешнего ключа на сериал.
В любом случае, пока не установлен ключ на сериал, то по логике вы не можете установить какой-либо плейлист туда
А так в выпадающем списке ничего нет(
Нужно тогда усложнять код, поскольку серия ещё не создана, то нужно сначала получить внешний ключ на парента
что-то вроде такого должно получиться.
Вместо parent_object подставлять serial?
UPD: У меня отступы сдвинулись.
Так все работает. Спасибо вам огромное. Учусь с вами потихоньку.
Отступы? какие отступы? в админке? это уже детали, которые просто нужно будет дооправить в дальнейшем.
У меня try сьехал влево, сначала не за метил и получал ошибки. Почудилось мне что нужно свои переменные подставлять))
А копировали просто с моего комментария. Там действительно съехал на один пробел. Ну я редактировал сразу в форме комментария текст.