使用JavaScript在Django管理网站上添加动态字段

时间:2019-05-04 01:36:41

标签: javascript python html django

我正在将Django 2.2与Python 3.7结合使用,我的问题分为两部分:

  1. 主要目标是在管理页面上的模型上创建动态字段,因此,例如,我有一个CharField有多个选择,并且只有charfield与{{1 }}的值,因此,如果我将其更改为某个选项,则会在下面显示另一个null,并提供更多选项供您选择,当然,所有charfield都在charfields中定义,仅对管理网站,直到满足条件为止,我认为最好的方法是使用JavaScript,我在项目中添加了models.py文件夹,但是我对如何在管理网站上集成JavaScript不太了解。那?
  2. 我是JavaScript的初学者,我什至不知道如何访问模型属性以使用/media/.show()方法,任何人都可以为我指出建立简单方法的正确方向是否根据其他条件显示或隐藏字段?

我的管理类包含以下要隐藏和显示的字段的模型:

.hide()

如果您看到“食谱序列”有多个值,则我希望motor2、3、4以及其余的按照上一个出现,所以不知道如何从JavaScript访问这部分代码

1 个答案:

答案 0 :(得分:1)

我通过以下方式自己解决了这个问题,我在管理类RecipesAdmin中添加了指向Java脚本文件的Media类,并在fieldsets数组中定义了类:

class RecipesAdmin(admin.ModelAdmin):
    fieldsets = [
        ("Title/Description", {"fields": ["recipe_title", "recipe_ingredients"]}),
        ("Ingredients sequence", {"fields": ["sequence"]}),
        (None, {"fields": ["sequence2",], "classes": ("HiddenSequence",)}),
        ("Photo and Create Date", {"fields": ["recipe_photo", "recipe_created"]})
    ]

    class Media:
       js = ('main/JS/ShowOrHideSequence.js',)

如您所见,字段“ sequence2”具有类“ HiddenSequence”,这将使我可以使用JavaScript控制一切,JavaScript代码如下:

$(function($) {
    $(function() {
        var sequence = $('#id_sequence'), verified = $('.HiddenSequence');

        function toggleVerified(value, HiddenSeq) {
            if (value !== '') {
                HiddenSeq.show();
            } else {
                HiddenSeq.hide();
            }
        }

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

        // show/hide on change
        sequence.change(function() {
            toggleVerified($(this).val(), verified);
        });
    });
});

请注意,我在互联网上发现此JavaScript不是我自己制作的,您可以发现,它的作用是验证值“ sequence”是否不同于“”,如果为true,则显示sequence2 ,如果为false,则将其隐藏。

javascript文件必须位于静态文件夹中。