Объекты отображаются под выпадающим полем формы

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

Модель:

class Vehicle(models.Model):
        type = models.ForeignKey(VehicleType, on_delete=models.CASCADE)
        number = models.CharField(max_length=10)

Вид:

def request_cabbie_upgrade(request):
    if request.method == 'POST':
        vehicle_form = VehicleForm(request.POST)
        if vehicle_form.is_valid():
            vehicle = vehicle_form.save(commit=False)
            vehicle.save()
            cabbie_request = CabbieRequest(user=request.user, vehicle=vehicle)
            cabbie_request.save()
            return redirect('PassengerDashboard')
    else:
        vehicle_form = VehicleForm()
    return render(request, 'users/cabbie_request.html', {'vehicle_form': vehicle_form, 'user': request.user})

Форма:

class VehicleForm(forms.ModelForm):

    type = forms.ModelChoiceField(queryset=VehicleType.objects.all(), empty_label="Vehicle Type")

    class Meta:
        model = Vehicle
        fields = ['type', 'number']

Шаблон:

{% extends "base.html" %}
{% block title %}
<title>Cabbie Dashboard</title>
{% endblock title %}
{% block body %}
<div class="container mt-5 pt-5 cabbie-dashboard-container">
  <div class="row">
    <div class="col-md-12">
      <h2>Cabbie Information</h2>
      <div class="card">
        <div class="card-body">
          <p><strong>Username:</strong> {{ cabbie.username }}</p>
          <p><strong>First Name:</strong> {{ cabbie.first_name }}</p>
          <p><strong>Last Name:</strong> {{ cabbie.last_name }}</p>
          <p><strong>Email:</strong> {{ cabbie.email }}</p>
          <p><strong>Phone:</strong> {{ cabbie.phone }}</p>
        </div>
      </div>
    </div>
    <div class="col-md-12 mt-4">
      <h2>Request Cabbie Upgrade</h2>
      <form method="post">
        {% csrf_token %}
        <div class="form-group">
          <label for="id_type">Vehicle Type:</label>
          {{ vehicle_form.type }}
        </div>
        <div class="form-group">
          <label for="id_number">Vehicle Number:</label>
          {{ vehicle_form.number }}
        </div>
        <button type="submit" class="btn btn-primary">Submit Request</button>
      </form>
    </div>
  </div>
</div>
{% endblock body %}

Я ожидал, что он будет просто выпадать.

Если я правильно понял ваш вопрос, проблема заключается в том, что вам нужно определить __str__ функцию для ваших моделей, чтобы Django знал, что отображать в выпадающем списке:

# models.py

class VehicleType(models.Model):
    type = models.CharField(max_length=20)

    def __str__(self):
        return f'{self.type}'
    


class Vehicle(models.Model):
    type = models.ForeignKey(VehicleType, on_delete=models.CASCADE)
    number = models.CharField(max_length=10)

    def __str__(self):
        return f'{self.number}: {self.type.type}'
Вернуться на верх