#django #django-models
#django #django-модели
Вопрос:
У меня есть блог, который использует Django, и в настоящее время я создаю страницу для создания новых сообщений.
В моей модели Post у меня есть поле внешнего ключа, которое связано с ImageField. При рендеринге страницы с использованием общего представления класса поле отображается в виде выпадающего списка, как и ожидалось, но я хотел бы добавить новые эскизы, а не только выбирать существующие, аналогично поведению страницы администратора при наличии поля внешнего ключа, где:
- Рядом с раскрывающимся списком есть знак плюс
- При нажатии отображается всплывающее окно, в котором я могу загрузить изображение
- После загрузки изображения вернитесь на главную страницу, где в раскрывающемся списке создается новая опция
Как я могу добиться поведения, аналогичного поведению администратора на моей странице? Я попытался реализовать его как виджет, но конечный результат очень запутанный, так как он просто перенаправляет на страницу администратора, и мне нужно вернуться на страницу создания сообщения и перезагрузить, чтобы показать новую опцию.
В качестве альтернативы я мог бы просто заменить раскрывающийся список внешнего ключа полем для загрузки файла, но я не знаю как, поскольку поле внешнего ключа ожидает объект, а не файл.
Вот мои упрощенные модели:
class Image(models.Model):
image = models.ImageField()
alt_tag = models.Charfield(max_length=30)
class Post(models.Model):
title = models.CharField(max_length=60)
content = models.TextField()
thumbnail = models.ForeignKey(Image, on_delete=models.SET_NULL)
При рендеринге страницы для создания новых сообщений я использую общий вид класса:
class PostCreateView(CreateView):
model = Post
template_name = '../templates/post_create_form.html'