Я использую небольшой проект django и использую django -clever-select для создания цепочки выпадающего выбора.
Я следовал точным инструкциям, приведенным в руководстве по их установке на https://pypi.org/project/django-clever-selects/.
Но как только я запускаю приложение в pycharm, раскрывающийся список не показывает какие-либо данные для выбора.
models.py
<code><pre>
class Category(models.Model):
mname = models.CharField(max_length=100, blank=False,unique=True)
mdescription = models.CharField(max_length=255, blank=True)
def __str__(self):
return self.mname
class Meta:
ordering = ('mname',)
class SubCategory(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE,null=True, blank=True)
scname = models.CharField (max_length=100, blank=False,unique=True)
scdecription = models.CharField(max_length=255, blank=True)
def __str__(self):
return self.scname
class Meta:
ordering = ('scname',)
class Deals(models.Model):
vendor_deal = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True)
subcategory = models.ForeignKey(SubCategory, on_delete=models.SET_NULL, null= True)
description = models.CharField(max_length=255, blank=True)
document = models.FileField(upload_to='documents/')
uploaded_at = models.DateField(auto_now_add=True)
expire_date = models.DateField(null=False)
current_date = models.DateField(auto_now_add=True)
def __str__(self):
return self.description
class Meta:
ordering = ('description',)
шаблон файл для формы
{% extends 'base.html' %}
{% load static %}
{% block content %}
{% csrf_token %}
{{ form.as_p }}
{% endblock %}
`файл form.py`
from django import forms
from clever_selects.forms import ChainedModelChoiceField
from django.urls import reverse_lazy
from uploads.core.models import Deals, Category, SubCategory
class DocumentForm(forms.ModelForm):
category = forms.ModelChoiceField(widget=forms.Select(attrs={'class':'form-control'}),queryset=Category.objects.all())
subcategory = ChainedModelChoiceField(parent_field='category', ajax_url=reverse_lazy('ajax_chained_models'),
empty_label=(u'Select Sub Category'), model=SubCategory, required=True, widget=forms.Select(attrs={'class':'form-control'}))
description = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}))
document = forms.FileField(widget=forms.FileInput(attrs={'class': 'form-control-file'}))
# Call attrs with form widget
expire_date = forms.DateField(widget=forms.widgets.DateInput(attrs={'class':'datepicker','id':'date','type': 'date'}))
class Meta:
model = Deals
fields = ('category', 'subcategory', 'description', 'document', 'expire_date')
файл view.py
class AjaxChainedView(ChainedSelectChoicesView):
def get_child_set(self):
return SubCategory.object.filter(catego=self.parent_value)
`файл url.py`
from django.conf.urls import url, include
from rest_framework import routers
from .views import home, model_form_upload, DealViewSet, AjaxChainedView
app_name = "core"
router = routers.DefaultRouter()
router.register(r'deals_list', DealViewSet)
urlpatterns = [
url(r'^$',home, name='home'),
# url(r'^uploads/simple/$', views.simple_upload, name='simple_upload'),
url(r'^form/$', model_form_upload, name='model_form_upload'),
url(r'^', include(router.urls)),
url(r'^ajax/custom-chained-view-url/$', AjaxChainedView.as_view(), name='ajax_chained_view'),
]
`