最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的示例代碼(省市區(qū))

 更新時(shí)間:2018年06月22日 08:29:15   作者:雷子-LL  
多級(jí)菜單在很多上面都有應(yīng)用,這篇文章主要介紹了Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)(省市區(qū)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

通過(guò)自定義Admin的模板文件實(shí)現(xiàn)省市區(qū)的三級(jí)聯(lián)動(dòng).要求創(chuàng)建記錄時(shí),根據(jù)省>市>區(qū)的順序選擇依次顯示對(duì)應(yīng)數(shù)據(jù).

修改記錄時(shí)默認(rèn)顯示已存在的數(shù)據(jù).

Model

class Member(models.Model):
  name = models.CharField(max_length=100, verbose_name='姓名')
  province = models.CharField(max_length=100, null=True, blank=True, verbose_name='省份')
  city = models.CharField(max_length=100, null=True, blank=True, verbose_name='城市')
  district = models.CharField(max_length=100, null=True, blank=True, verbose_name='區(qū)/縣')

  class Meta:
    verbose_name_plural = verbose_name = '人員'

  def __str__(self):
    return self.name

View和url

# views
LOCATION = {'吉林省': {'長(zhǎng)春市': ['南關(guān)區(qū)', '朝陽(yáng)區(qū)', '二道區(qū)', '綠園區(qū)']}}


def choose_province(request):
  province = list(LOCATION.keys())
  return JsonResponse(province, safe=False)


def choose_city(request):
  province = request.GET.get('p')
  cities = list(LOCATION[province].keys())
  return JsonResponse(cities, safe=False)


def choose_district(request):
  province = request.GET.get('p')
  city = request.GET.get('c')
  districts = LOCATION[province][city]
  return JsonResponse(districts, safe=False)
  
# urls
from person.views import choose_province, choose_city, choose_district

urlpatterns = [
  path('province/', choose_province),
  path('city/', choose_city),
  path('district/', choose_district),
  path('admin/', admin.site.urls),
]

Admin

class MemberForm(forms.ModelForm):
  class Meta:
    widgets = {
      'province': forms.Select(),
      'city': forms.Select(),
      'district': forms.Select()
    }

@admin.register(Member)
class MemberAdmin(admin.ModelAdmin):
  form = MemberForm
  fields = ('name', ('province', 'city', 'district'))
  list_display = ('name', 'province', 'city', 'district')
  change_form_template = 'area.html'

這里需要寫一個(gè)form將省市區(qū)這三個(gè)字段顯示為單選框.

模板文件

找到django源碼中的change_form.html(django/contrib/admin/templates/admin/)文件,復(fù)制到app下templates目錄中.

在admin中指定自定義的模板文件 change_form_template = 'area.html'

{% block admin_change_form_document_ready %}
  <script type="text/javascript"
      id="django-admin-form-add-constants"
      src="{% static 'admin/js/change_form.js' %}"
      {% if adminform and add %}
        data-model-name="{{ opts.model_name }}"
      {% endif %}>
  </script>

  <script type="text/javascript">
    (function($) {
      $('#id_city').change(function() {
        let p_id = $('#id_province').val();
        let c_id = $('#id_city').val();
        $.get('/district/', {"p": p_id, "c": c_id }, function(a_info) {
          var area_info = $('#id_district').empty().append('<option value>' + '---------' + '</option>');
          $.each(a_info, function(i, area) {
            area_info.append('<option value="' + area + '">' + area + '</option>')
          });
          {% if change %}
            $("#id_district").find("option:contains({{ original.district }})").attr('selected', true);
          {% endif %}
        });
      });

      $('#id_province').change(function() {
        let p_id = $('#id_province').val();
        $.get('/city/', { 'p': p_id }, function(c_info) {
          var city_info = $('#id_city').empty().append('<option value>' + '---------' + '</option>');
          $.each(c_info, function(i, city) {
            city_info.append('<option value="' + city + '">' + city + '</option>')
          });
          {% if change %}
            $("#id_city").find("option:contains({{ original.city }})").attr('selected', true);
            $("#id_city").trigger("change");
          {% endif %}
        });
      });

      $.get('/province/', function(p_info) {
        var province_info = $('#id_province').empty().append('<option value>' + '---------' + '</option>');
        $.each(p_info, function(i, province) {
          province_info.append('<option value="' + province + '">' + province + '</option>')
        });
        {% if change %}
          $("#id_province").find("option:contains({{ original.province }})").attr('selected', true);
          $("#id_province").trigger("change");
        {% endif %}
      });
    })(django.jQuery);
  </script>

參考: http://m.fzitv.net/article/142409.htm

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python的ImageTk.PhotoImage大坑及解決

    python的ImageTk.PhotoImage大坑及解決

    這篇文章主要介紹了python的ImageTk.PhotoImage大坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python SOCKET編程基礎(chǔ)入門

    python SOCKET編程基礎(chǔ)入門

    這篇文章主要介紹了python SOCKET編程基礎(chǔ)入門的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • python venv和virtualenv模塊詳解

    python venv和virtualenv模塊詳解

    venv 是 Python 內(nèi)置標(biāo)準(zhǔn)庫(kù)中創(chuàng)建輕量級(jí)虛擬環(huán)境的工具,本文通過(guò)示例代碼介紹python venv和virtualenv的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • python使用Pillow創(chuàng)建可自定義的圖標(biāo)生成器

    python使用Pillow創(chuàng)建可自定義的圖標(biāo)生成器

    在本篇博客中,我們將探討如何使用?wxPython?和?Pillow?庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的圖標(biāo)生成器,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • OpenCV-Python模板匹配人眼的實(shí)例

    OpenCV-Python模板匹配人眼的實(shí)例

    模板匹配是指在當(dāng)前圖像A內(nèi)尋找與圖像B最相似的部分,本文詳細(xì)的介紹了OpenCV-Python模板匹配人眼的實(shí)例,感興趣的可以了解一下
    2021-06-06
  • 使用Python操作文件系統(tǒng)的方法

    使用Python操作文件系統(tǒng)的方法

    Python提供了許多內(nèi)置庫(kù)來(lái)處理文件系統(tǒng),如os、shutil和pathlib等,這些庫(kù)可以幫助你創(chuàng)建、刪除、讀取、寫入文件和目錄,這篇文章主要介紹了使用Python操作文件系統(tǒng),需要的朋友可以參考下
    2023-07-07
  • Python中實(shí)現(xiàn)常量(Const)功能

    Python中實(shí)現(xiàn)常量(Const)功能

    這篇文章主要介紹了Python中實(shí)現(xiàn)常量(Const)功能,python語(yǔ)言本身沒(méi)有提供const,本文使用一個(gè)類來(lái)實(shí)現(xiàn)常量定義功能,并介紹了使用方法,需要的朋友可以參考下
    2015-01-01
  • python golang中g(shù)rpc 使用示例代碼詳解

    python golang中g(shù)rpc 使用示例代碼詳解

    這篇文章主要介紹了python golang中g(shù)rpc 使用,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • django初始化數(shù)據(jù)庫(kù)的實(shí)例

    django初始化數(shù)據(jù)庫(kù)的實(shí)例

    今天小編就為大家分享一篇django初始化數(shù)據(jù)庫(kù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 在Python中操作字符串之replace()方法的使用

    在Python中操作字符串之replace()方法的使用

    這篇文章主要介紹了在Python中操作字符串之replace()方法的使用,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05

最新評(píng)論

营山县| 禄丰县| 灵川县| 察雅县| 株洲县| 河西区| 衡阳市| 隆子县| 洮南市| 利津县| 巩留县| 运城市| 遂昌县| 祁阳县| 绥江县| 临洮县| 武山县| 英超| 兴和县| 喀喇沁旗| 乌兰浩特市| 达尔| 红河县| 六盘水市| 隆昌县| 应城市| 安阳市| 繁昌县| 丽水市| 蛟河市| 巴马| 抚顺县| 合山市| 台南市| 文山县| 临邑县| 香港 | 抚州市| 宝应县| 根河市| 溧水县|