django select2 цепочка выпадающего меню - PullRequest
0 голосов
/ 14 декабря 2018

Я новичок в Django и пытаюсь познакомиться с ним.

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

Я пытаюсь скопировать код с этого сайта:
https://django -select2.readthedocs.io / en / latest / extra.html # chained-select2

У меня есть следующие модели в models.py

from django.db import models

# Create your models here.
class Country(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name


class City(models.Model):
    name = models.CharField(max_length=255)
    country = models.ForeignKey('Country', related_name="cities", on_delete=models.CASCADE)


    def __str__(self):
        return self.name

Мой views.py имеет следующий код: из django.shortcuts рендеринга импорта из форм импорта django

from django_select2.forms import ModelSelect2Widget

from .models import Country, City
# Create your views here.

class AddressForm(forms.Form):
    country = forms.ModelChoiceField(
        queryset=Country.objects.all(),
        label=u"Country",
        widget=ModelSelect2Widget(
            model=Country,
            search_fields=['name__icontains'],
        )
    )

    city = forms.ModelChoiceField(
        queryset=City.objects.all(),
        label=u"City",
        widget=ModelSelect2Widget(
            model=City,
            search_fields=['name__icontains'],
            dependent_fields={'country': 'country'},
            max_results=500,
        )
    )

def start(request):
    form = AddressForm()
    return render(request, 'startpagina.html', {'form': form})

MyHTML имеет следующий код:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Chained</title>
{{ form.media.css }}
<script src="https://code.jquery.com/jquery-2.2.4.min.js"
        integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
        crossorigin="anonymous"></script>


</head>
<body>
<table>
    {{ form }}
</table>
<br>
{{ form.media.js }}
</body>
</html>

Я заполнил модели своей страны и города следующими значениями:
Страна: имя: Нидерланды
Страна: имя: Бельгия
Город: имя:Амстердам, страна: Нидерланды
Город: имя: Роттердам, страна: Нидерланды
Город: имя: Антверпен, страна: Бельгия
Город: имя: Брюссель, страна: Бельгия

Когда я запускаю свой проект Django, я получаю 2 выпадающих меню, но, к сожалению, они не связаны.Это означает, что когда я выбираю Nederland, я не получаю Амстердам и Роттердам, но я получаю все города.

Может кто-нибудь сказать мне, что мне не хватает в моем коде, чтобы связать выпадающее меню 2

...