如何将Dependent链接下拉列表与Django select2一起使用

2024-05-10 06:38:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图列出依赖于所选国家的城市 我正在浏览文档中的示例,我似乎不明白 如何实现文档上的内容。当我尝试实现它时,我得到了这个错误消息

TypeError at /page/
__init__() got an unexpected keyword argument 'instance'

这是回溯错误

Internal Server Error: /page/

    Traceback (most recent call last):
      File "C:\Users\Benedict\Miniconda3\envs\django2.1\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
        response = get_response(request)
      File "C:\Users\Benedict\Miniconda3\envs\django2.1\lib\site-packages\django\core\handlers\base.py", line 115, in 
    _get_response
        response = self.process_exception_by_middleware(e, request)
      File "C:\Users\Benedict\Miniconda3\envs\django2.1\lib\site-packages\django\core\handlers\base.py", line 113, in 
    _get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "C:\Users\Benedict\Miniconda3\envs\django2.1\lib\site-packages\django\views\generic\base.py", line 71, in view
        return self.dispatch(request, *args, **kwargs)
      File "C:\Users\Benedict\Miniconda3\envs\django2.1\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
        return handler(request, *args, **kwargs)
      File "C:\Users\Benedict\Miniconda3\envs\django2.1\lib\site-packages\django\views\generic\edit.py", line 168, in 
    get
        return super().get(request, *args, **kwargs)
      File "C:\Users\Benedict\Miniconda3\envs\django2.1\lib\site-packages\django\views\generic\edit.py", line 133, in 
    get
        return self.render_to_response(self.get_context_data())
      File "C:\Users\Benedict\Miniconda3\envs\django2.1\lib\site-packages\django\views\generic\edit.py", line 66, in get_context_data
        kwargs['form'] = self.get_form()
      File "C:\Users\Benedict\Miniconda3\envs\django2.1\lib\site-packages\django\views\generic\edit.py", line 33, in get_form
        return form_class(**self.get_form_kwargs())
    TypeError: __init__() got an unexpected keyword argument 'instance'
    [19/Apr/2020 20:58:54] "GET /page/ HTTP/1.1" 500 94467

models.py

class Country(models.Model):
    name = models.CharField(max_length=255)


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

forms.py

from django import forms
from django_select2 import forms as s2forms
from .models import City, Country

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

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

views.py

from django.views.generic import ListView, CreateView, UpdateView
from django.urls import reverse_lazy
from .models import Country, City
from .forms import AddressForm

class PersonCreateView(CreateView):
    model = City
    form_class = AddressForm
    success_url = reverse_lazy('person_changelist')

class PersonListView(ListView):
    model = City
    context_object_name = 'people'
    template_name = 'django_starter_app/person_list.html'

url.py

urlpatterns = [
    path('', views.PersonCreateView.as_view(), name='person_add'),
]

person\u form.html

<form method="post">
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>

Tags: djangoinpyformgetlibpackagesline