Как добавить новые объекты внешнего ключа в форму в Django?

#django #django-models

#django #django-модели

Вопрос:

У меня есть блог, который использует Django, и в настоящее время я создаю страницу для создания новых сообщений.

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

  1. Рядом с раскрывающимся списком есть знак плюс
  2. При нажатии отображается всплывающее окно, в котором я могу загрузить изображение
  3. После загрузки изображения вернитесь на главную страницу, где в раскрывающемся списке создается новая опция

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

В качестве альтернативы я мог бы просто заменить раскрывающийся список внешнего ключа полем для загрузки файла, но я не знаю как, поскольку поле внешнего ключа ожидает объект, а не файл.

Вот мои упрощенные модели:

 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'