0

Я пытаюсь использовать Django-smart-selects, который должен позволить вам создать цепочку forms.Форма работает в Admin правильно, но не в шаблоне

Итак, я решил попробовать это на простом примере, прежде чем добавлять в свой проект. Проблема в том, что она работает правильно в Admin, но она не работает в шаблоне (визуализируется с использованием метода просмотра).

Это не вызывает никакой ошибки, но оно не заполняет выпадающее меню Country, когда я выбираю Continent в выпадающем меню континента.

Обратите внимание, что проблема не в MODELS.PY, так как она корректно работает в Admin.

Есть 3 Местоположение:

  1. Америка - NewYork
  2. Америка - Техас
  3. Африка - Марокко

Есть две формы - континент и страна. Если я не выбрал Continent, я не могу выбрать любую страну. Если я выберу Америку, второе меню будет заполнено NewYork и Texas, что верно. Это находится в Admin. В шаблоне, я могу выбрать континент

Вот код:

FORMS.PY:

class LocationForm(forms.ModelForm): 
    class Meta: 
     model = Location 
     fields = ('newcontinent','newcountry',) 

VIEWS.PY:

def test(request): 
    location_form = LocationForm() 
    if request.method=='POST': 
     print request.cleaned_data 
    return render(request,'test.html', context={'location_form':location_form}) 

ADMIN.PY:

... 
admin.site.register(Continent) 
admin.site.register(Country) 
admin.site.register(Location) 
... 

URLS.PY:

... 
    url(r'^chaining/', include('smart_selects.urls')), 
... 

test.html:

{% extends "base.html" %} 

{% block content %} 
    <form action="" method="post">{% csrf_token %} 
    {{ location_form }} 
    </form> 
{% endblock %} 

MODELS.PY:

class Continent(models.Model): 
    name = models.CharField(max_length=40) 

    def __str__(self): 
     return self.name 

class Country(models.Model): 
    name = models.CharField(max_length=40) 
    continent = models.ForeignKey(Continent) 

    def __str__(self): 
     return self.name 

from smart_selects.db_fields import ChainedForeignKey 

class Location(models.Model): 
    newcontinent = models.ForeignKey(Continent) 
    newcountry = ChainedForeignKey(
     Country, # the model where you're populating your countries from 
     chained_field="newcontinent", # the field on your own model that this field links to 
     chained_model_field="continent", # the field on Country that corresponds to newcontinent 
     show_all=True, # only shows the countries that correspond to the selected continent in newcontinent 
    ) 

ответ

0

Вы должны загрузить форму носителя в test.html как {{form.media}} или ваш случай {{location_form.media}}, чтобы включить файлы javascript/css.