根据在另一个字段中的选择显示/隐藏django管理表单字段

时间:2019-07-23 04:58:04

标签: python jquery django django-admin

我正在尝试隐藏Django管理表单字段,直到从下拉列表中选择特定值为止

我尝试了包括Jquery在内的所有操作,Jquery文件正确加载,因此我的静态根目录指向正确的文件,但是当管理站点加载并且我更改下拉列表中的值时,没有任何反应。

我正在使用最新的Django和python 3.7,也正在使用Django-jet作为自定义管理模板

models.py


class Incident(models.Model):
    Incident_Type =models.ForeignKey(IncidentType,on_delete=models.DO_NOTHING, 
    null=True, blank=False)
DEM_REASON_CHOICES = (("Payments", "Payments"), ("Policies", "Policies"), ("Legal Issues", "Legal Issues"), ("Deactivation", "Deactivation"))
    demonstration_reason = models.CharField(max_length=200, choices=DEM_REASON_CHOICES, null=True, blank=True)

admin.py

@admin.register(IncidentType)
class IncidentTypeAdmin(admin.ModelAdmin):

@admin.register(Incident)
class IncidentAdmin(admin.ModelAdmin):
    form = IncidentAdminForm

forms.py

from django import forms
from .models import Incident

class IncidentAdminForm(forms.ModelForm):
    class Meta:
        model = Incident
        widgets = {
            'demonstration_reason': forms.SelectMultiple,
        }
        fields = "__all__"
    class Media:
        js = ('jet/showhide.js',)

我的Jquery脚本

(function($) {
    $(function() {
        var selectField = $('#id_Incident_Type'),
            verified = $('#id_demonstration_reason');

        function toggleVerified(value) {
            if (value === 'Demonstration') {
                verified.show();
            } else {
                verified.hide();
            }
        }

        // show/hide on load based on pervious value of selectField
        toggleVerified(selectField.val());

        // show/hide on change
        selectField.change(function() {
            toggleVerified($(this).val());
        });
    });
})(django.jQuery);

我正在这样将脚本加载到base.html中

{% block scripts %}
<script src="{% static 'jet/showhide.js' %}"></script>
{% endblock %}

,当我运行服务器时,js脚本会加载以下消息 “ GET /static/jet/showhide.js HTTP / 1.1” 304 0

我希望在我从Incident_Type字段('#id_Incident_Type')中选择演示之前,要隐藏实证原因字段('#id_demonstration_reason')

但是使用当前代码,当我进入管理页面并单击模型时,exploration_reason字段并未隐藏,并且当我更改Incident_Type的值时没有任何反应

1 个答案:

答案 0 :(得分:0)

我建议选择2。该库还有很多其他功能,但是链接字段是您要尝试做的事情。

https://django-select2.readthedocs.io/en/latest/extra.html#chained-select2