【问题标题】:Overriding js file for FilteredSelectMultiple widget覆盖 FilteredSelectMultiple 小部件的 js 文件
【发布时间】:2019-09-16 12:57:59
【问题描述】:

如果这是一个基本问题,我很抱歉,但我是 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

【问题讨论】:

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


    【解决方案1】:

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

    原来我需要在Media 类中定义所有使用的js 文件。

    我修改后的代码:

    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代码并刷新站点后会显示旧代码!这些知识可以让我省去几天的时间去挖掘和拉扯我的头发......

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2020-01-09
      • 2010-12-09
      • 2012-04-10
      • 2019-08-22
      • 2017-10-31
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多