Primeiro passo é instalar o pacote django-smart-selects usando o pip
pip install django-smart-selects
Adicione o smart_selects
dentro do INSTALLED_APPS
Adicione no urls do seu projeto a linha do chaining:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^chaining/', include('smart_selects.urls')),
)
É preciso incluir a linha abaixo no settings.py do projeto
JQUERY_URL = True
Agora veja um exemplo de como usar em seu model
class Cidade(models.Model):
nome = models.CharField(max_length=60)
estado = models.CharField(max_length=2, choices=LISTA_ESTADOS)
def __str__(self):
return self.nome
class Local(models.Model):
estado = models.CharField(max_length=2, default='SP', choices=LISTA_ESTADOS)
cidade = ChainedForeignKey(
Cidade, on_delete=models.CASCADE, chained_field="estado",
chained_model_field="estado", show_all=False,
auto_choose=True,
sort=True,
default=1
)
Legal de usar esse pacote, que quando seleciona um estado ele filtra as cidades. 😉