如何在Django Admin里添加省市二级联动下拉列表

如何在Django Admin里添加省市二级联动下拉列表,第1张

是在models.py了里面的配置问题

from django.db import models

from django.contrib.auth.models

class User(models.Model):

username = models.CharField(max_length=50)

userpwd = models.CharField(max_length=10)

usersex = models.IntegerField()

admin.site.register(User)

加上from django.db import models

from django.contrib.auth.models

和admin.site.register(User)在后台就可以看到user了

得确是可以,不过过程有点多, 以下代码仅供参考,请自行调整

1. 定义数据来源, 这里简单的定义一下,如 settings.py

LOCATION = {"浙江": ["杭州", "宁波"], "湖北": ["武汉"]}

2. models.py

COUNTRY = [(key, key) for key in sorted(settings.LOCATION.keys())]

class Company(models.Model):

country = models.CharField(max_length=50, null=True, blank=True, verbose_name=_("Country"), choices=COUNTRY)

state = models.CharField(max_length=50, null=True, blank=True, verbose_name=_('State'))

3. admin.py

class CompanyAdminForm(forms.ModelForm):

state = MyChoiceField(label=_('State'), required=False)

def locations(self):

import json

return json.dumps(settings.LOCATION)

def __init__(self, *args, **kwargs):

ins = kwargs.get('instance')

super(CompanyAdminForm, self).__init__(*args, **kwargs)

state = self.fields['state']

if ins and ins.country:

state.choices = [(item, item) for item in settings.LOCATION.get(ins.country)]

class Meta:

model = Company

class CompanyAdmin(admin.ModelAdmin):

form = CompanyAdminForm

4. templates/admin/app/company/change_form.html

复制原change_form.html内容 在合适位置加入(自行写js代码 )

<script type="text/javascript">

var LOCATION = {{ adminform.form.locations | safe }}

var $ = django.jQuery

$(document).ready(function(){

$('#id_country').change(function(){

var country =$(this).val()

$('#id_state').empty()

if (country ){

var state = LOCATION[country]

var i

for (i=0i <state.lengthi++){

var v = state[i]

$('#id_state').append("<option value='" + v + "'>" + v + "</option>")

}

} else {

$('#id_state').append("<option value=''>" + "---------" + "</option>")

}

})

})

</script>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/7907994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存