使用Django中下拉字段的用户输入动态更改forms.py小部件

使用Django中下拉字段的用户输入动态更改forms.py小部件,django,django-models,django-forms,ace-editor,Django,Django Models,Django Forms,Ace Editor,我正在尝试制作一个编码webapp,用户可以在其中编写choose语言并编写代码。为此,我使用ace editor。ace editor需要“mode”变量来了解语言并提供语法突出显示 所以,我做了一个下拉列表,我想将“mode”的值设置为下拉字段的值。如果用户选择C++,我希望模式=“C++”。我有以下代码,但我想不出如何做。 forms.py from django_ace import AceWidget class notepadModelForm(forms.ModelForm):

我正在尝试制作一个编码webapp,用户可以在其中编写choose语言并编写代码。为此,我使用ace editor。ace editor需要“mode”变量来了解语言并提供语法突出显示

所以,我做了一个下拉列表,我想将“mode”的值设置为下拉字段的值。如果用户选择C++,我希望模式=“C++”。我有以下代码,但我想不出如何做。
  • forms.py

    from django_ace import AceWidget
    
    class notepadModelForm(forms.ModelForm):
        Your_code = forms.CharField(widget=AceWidget(mode='python', theme='clouds'))
        class Meta:
        model=notepadForm
        fields=['Title','Your_code','Separator']
    
  • models.py

    class notepadForm(models.Model):
        CHOICES=[('python','Python'),('Cplusplus','C++'),('c','C')]
    
        Title=models.CharField(max_length=120,null=False,blank=False)
        Separator=models.CharField(choices=CHOICES,max_length=10,default=";")
        Your_code=models.TextField(null=True,blank=True)
    

我搜索了它,找到了一些动态添加字段的示例,但是修改了我没有找到的小部件,这就是我在这里问它的原因。

您可以使用javascript和ace的modelist扩展创建下拉列表


var modelist=ace.require(“ace/ext/modelist”)
var dom=ace.require(“ace/lib/dom”)
//使用ace中的buildDom,但这里可以使用任何其他构建dom的方法
var modePicker=dom.buildDom([“选择”{
值:“ace/mode/text”,
onchange:function(){
editor.setOption(“mode”,this.value);
}
},modelist.modes.map(函数(x){
返回[“选项”{
值:x.mode
},x.caption];
})
],文件正文);
var editor=ace.edit(空{
最大行数:10,
minLines:5
})
document.body.appendChild(editor.container)