Как добавить объекты в другую модель при использовании формы в Django? - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть несколько форм, которые извлекают объекты через ForeignKey, например, Flight, Trip.

Так, например, когда кто-то пытается создать новый Trip, он может выбрать Hotel из выпадающего списка.

Мой вопрос: как мы можем в форме Trip добавить Hotel. Так же, как при использовании Django собственной панели администратора, где вы получаете знак плюс, и вы можете добавить новый Hotel при создании Trip.

Редактировать:

Hotel - это ключ ForeignKey для модели Trip. И я использую ModelForm.

Цель состоит в том, чтобы вы могли либо выбрать существующий Hotel, либо создать новый при создании Trip.

1 Ответ

0 голосов
/ 26 февраля 2020

Я думаю, что вы ищете forms.ModelChoiceField.
Он используется следующим образом:

hotel = forms.ModelChoiceField(
    queryset=Hotel.objects.all() # or whatever queryset you want to use
    # Rest of the configuration
)

Если я не ошибаюсь, он создаст тег Html Select, имеющий параметры с pk каждого Hotel объекта в качестве значения. Чтобы указать внутренний текст каждой опции, вы должны определить следующий метод для класса Hotel:

def __str__(self):
    return self.name # or whatever needed


Если вы действительно искали это, я должен отговорить вас от его использования если вы создаете сайт / приложение промышленного уровня. Лучший (и, очевидно, более сложный) подход состоит в том, чтобы получить набор запросов Hotels, сериализовать их в JSON, создать карту / строку / виджет для каждой гостиницы для поиска и выбора пользователем. Однако это быстрый и удобный способ управления небольшими проектами.

...