覆盖FilteredSelectMultiple小部件的js文件

时间:2019-09-16 12:57:59

标签: python django python-3.x django-forms

很抱歉,这是一个基本问题,但是我是django的新手,无法找到任何有关此的新信息。

我已经在用户表单中实现了FilteredSelectMultiple小部件。现在,我想对窗口小部件本身进行一些小的更改(进行翻译,编辑工具提示等)。为此,我复制并编辑了原始js文件。现在,我想用已编辑的文件覆盖原始文件。

为此文件,我创建了js静态目录。但是随后,我尝试将其添加到我的Media类加载的小部件中,使其保持不变。

我应该如何正确做?

我在forms.py中的代码

class DrgSkaiciuokle(forms.Form):
    bazine_kaina = forms.DecimalField(max_digits=5, decimal_places=2, required=True,
                                      label="Bazinė kaina",
                                      initial= BazineKaina.objects.get(),

    def clean_bazine_kaina(self):
        bazine_kaina = self.cleaned_data['bazine_kaina']
        return bazine_kaina

    drg_pasirinkimas = forms.ModelMultipleChoiceField(queryset=DRGkodas.objects.all(),
                                                      label="Pasirinkite atvejį sudarančius DRG",
                                                      widget=FilteredSelectMultiple("DRG kodai", is_stacked=False),
                                                      required=True)


    class Media:

        css = {
           'all': ('/static/css/widgets.css',),
         }

        js = (
            '/static/js/SelectFilter2.js',
            )


    def clean_drg_pasirinkimas(self):
        drg_pasirinkimas = self.cleaned_data['drg_pasirinkimas']
        return drg_pasirinkimas

1 个答案:

答案 0 :(得分:0)

经过半夜的思考和更多的挖掘,我自己找到了解决方案。

结果证明,我需要在js类中定义所有使用过的Media文件。

我的修改代码:

class DrgSkaiciuokle(forms.Form):
    bazine_kaina = forms.DecimalField(max_digits=5, decimal_places=2, required=True,
                                      label="Bazinė kaina",
                                      initial= BazineKaina.objects.get(),

    def clean_bazine_kaina(self):
        bazine_kaina = self.cleaned_data['bazine_kaina']
        return bazine_kaina

    drg_pasirinkimas = forms.ModelMultipleChoiceField(queryset=DRGkodas.objects.all(),
                                                      label="Pasirinkite atvejį sudarančius DRG",
                                                      widget=FilteredSelectMultiple("DRG kodai", is_stacked=False),
                                                      required=True)


    class Media:

        css = {
           'all': ('/static/css/widgets.css',),
         }

        js = (
            #copy required files to directory of your choice
            '/static/js/core.js',
            '/static/js/jquery.init.js',
            '/static/js/jquery.js',
            '/static/js/SelectBox.js',
            '/static/js/SelectFilter2.js',
            )


    def clean_drg_pasirinkimas(self):
        drg_pasirinkimas = self.cleaned_data['drg_pasirinkimas']
        return drg_pasirinkimas

编辑:同样重要!如果您尝试在更改js文件后使用Chrome开发网站,请使用ctl-shift-r组合键对Chrome进行硬重置,因为Chrome会保留旧文件,直到您完全关闭它为止。因此,在修改js代码并刷新网站后,它将显示旧代码!这些知识可以为我节省几天的挖掘和拔头发的时间...