Django - 使用ChainedModelChoiceField(smart_selects)

时间:2017-01-02 18:46:52

标签: python django

我在Django中使用smart_selects来过滤下拉视图。 在我的管理页面中,我使用'ChainedForeignKey'

成功完成了此操作

我现在正在尝试使用'ChainedModelChoiceField'创建用户表单并实现相同的功能

基本上我正在尝试访问表单上的模型数据,以便当用户选择“状态”时,只显示该状态的城市。我的模型也已填充。

models.py:

class State(models.Model):
    state= models.CharField(max_length=140)
    def __str__(self):
        return self.state

class City(models.Model):
    city= models.CharField(max_length=140,unique=True)
    state= models.ForeignKey(State)
    def __str__(self):
        return self.city

form.py

from django import forms
from django.forms import ModelChoiceField, ModelForm
from smart_selects.form_fields import ChainedModelChoiceField
from search.models import State, City

class MyForm(forms.Form):
    user_state = forms.ModelChoiceField(queryset = State.objects.all(),required=True)
    user_city=ChainedModelChoiceField( ..

// html page

{% block title %}Contact - {{ block.super }}{% endblock %}

{% block content %}
<h1>Contact</h1>
<form role="form" action="" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Submit</button>
</form>
{% endblock %}

'city'下拉列表显示为空白。 我看到ChainedModelChoiceField的args是:

  

self,to_app_name,to_model_name,chained_field,   chained_model_field,foreign_key_app_name,foreign_key_model_name,   foreign_key_field_name,show_all,auto_choose,sort = True,manager = None,   initial = None,view_name = None

1 个答案:

答案 0 :(得分:0)

解决了这个问题。

在多次尝试实现 ChainedModelChoiceField 之后,事实证明客户端jQuery给了我一个问题。

你需要做什么: 在&#34;%加载静态文件之后确保这是第一个事物......&#34;:

  <script src="{% static 'xxxxx/xxxx/jquery/jquery.js' %}"></script>
  <script src="{% static 'smart-selects/admin/js/chainedfk.js' %}"></script>