Хобрук: Ваш путь к мастерству в программировании

Как научиться представлять сложные отношения в модели Django?

Рассмотрим приложение для бронирования билетов на поезд. Здесь много городов, станций и поездов.

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

Теперь я хочу сделать форму, в которой пользователь может выбрать свой город, станции в том же городе, а затем поезд (который получает эта станция города) и, наконец, забронировать поезд.
Это то, что я сделал до сих пор.

class City(models.Model):
    name = models.CharField(max_length=50, help_text="Your city name")

class Train(models.Model):
    number = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=50, help_text="Train")
    city = models.ForeignKey(City)



class Station(models.Model):
   city = models.ForeignKey(City)
   name = models.CharField(max_length=50, help_text="All available stations in your city")

class BookedTicket(models.Model):
   city = models.ForeignKey(City)
   station = models.ForeignKey(Station)
   train = models.ForeignKey(Train)

Пожалуйста, предложите, как правильно установить отношения, потому что я не могу отображать правильные станции для выбранного города, а также поезда для выбранного города и станции.


Ответы:


1

Вы можете использовать _set, чтобы найти станции в городе

my_city = City.objects.get(name="my hometown") 
stations_in_city = my_city.station_set.all()

Также см. документацию здесь и здесь для некоторых примеров.

06.04.2017
  • Спасибо. Я это немного понял. Что я хочу спросить, так это предположим, что я создаю форму в Forms.py с именем BookTicket form, которая содержит поля город, станция и поезд. Теперь, если пользователь выбирает город из раскрывающегося списка, раскрывающееся меню, соответствующее станции, должно автоматически обновляться, чтобы (город, станция) были действительными данными. Точно так же (город, станция, поезд) также должны быть допустимыми данными. У вас есть предложение сделать то же самое? 08.04.2017
  • Спасибо, что приняли ответ. В раскрывающихся меню вы можете определить набор запросов, который следует использовать в качестве вариантов. Однако вы хотите динамически обновлять это в зависимости от выбора другого поля. Насколько я знаю, для этого вам нужно использовать код на стороне клиента. Например. отправив выбор города, используя, например, Jquery и Ajax на сервер (когда пользователь выбирает город), получить набор запросов (например, станции в городе) из базы данных и вернуть json-ответ допустимых станций, который затем используется для обновления вариантов выбора в поле станции. Не все так просто....удачи! 11.04.2017
  • проверьте этот вопрос, например: поле выбора модели Django - зависит от других выбор поля 11.04.2017
  • Новые материалы

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..

    React Hooks: основы деструктуризации массива
    Kent C. Dodds написал классный пост о том, как грядущая функция React под названием Hooks работает на капоте. Предстоящий хук React useState основан на деструктурировании массива, давайте..

    Пакеты R, используемые в Tesla
    Добро пожаловать обратно! R — очень популярный язык программирования, используемый множеством компаний, включая Tesla! Итак, давайте взглянем на некоторые пакеты R, которые использует Tesla...

    Сокращение и слияние токенов для эффективных моделей VL: обзор
    Часто в задачах, связанных с компьютерным зрением и НЛП, вычислительно затратная и требующая большого объема памяти обработка становится препятствием для более быстрого логического вывода модели, а..