我在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
答案 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>