Как включить итераторы с выбором модели в представления

Я изучал поля формы в документации django Итерация отношений выбора, но нашел это немного трудным для понимания. Я хочу разработать поле формы с итератором, в котором в select я получаю название круиза, в опциях для data-ship_name я получаю соответствующие названия кораблей, а для text я получаю пункты назначения. Однако я не уверен, как внедрить форму в views/html.

Вот что я пробовал:

models.py

from django.db import models

class Cruises(models.Model):
    id = models.CharField(db_column='ID', primary_key=True, max_length=200)  # Field name made lowercase.
    title = models.CharField(max_length=200, blank=True, null=True)
    ship_name = models.CharField(max_length=200, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'items'


    def __str__(self):
        return self.title

class Destination(models.Model):
    destination = models.ForeignKey(Cruises, on_delete=models.CASCADE, blank=True, null=True)
    #destination = models.CharField(max_length=200, blank=True, null=True)

views.py

from django.shortcuts import render
from .models import Cruises
def basic(request): 
    #form_destination =  Cruises
    long_list = Cruises.objects.values('title', 'ship_name')
    return render(request, 'cruises/basic.html', context = {'long_list':long_list})

forms.py

from django import forms
from cruises.models import Cruises, Destination

class CruiseSelect(forms.Select):
    def create_option(self, name, value, label, selected, index, subindex=None, attrs=None):
        option = super().create_option(name, value, label, selected, index, subindex, attrs)
        if value:
                option['attrs']['data-ship_name'] = value.instance.ship_name
                return option

class destinationForm(forms.ModelForm):
    class Meta:
        model = Destination
        fields = ['destination']
        widgets = {'destination': Cruises}

basic.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Cruises</title>
  </head>
<body>
<h1> Cruise Control </h1>


<form action="/action_page.php">
  <label for='destination'>Destination</label>
  <input type="text" list="destination" />
  <datalist id="destination">
  {% for lng_l in long_list %}
  <option>{{lng_l.title}}</option>
  {% endfor %}
  </datalist>
  <!label for="cruisetime">Departure date</label>
  <!input type="date" id="cruisetime" name="cruisetime" min={{dep_l.departureDate}}>
  <!input type="submit">
</form>

</body>
</html>

Я получаю выпадающий список названий и имен кораблей, но я хочу выбрать выпадающий список пунктов назначения - как достичь этого с помощью форм/представлений?

Вернуться на верх