django 响应表单更改

9nvpjoqh  于 2022-12-27  发布在  Go
关注(0)|答案(3)|浏览(120)

我有一个一般性的问题要问django-admin。
是否可以对表单更改做出React?
我在django-admin详细信息站点中有一个选择域,每当我修改选择域中的数据时,我想修改只读的域。
有人处理过这个问题吗?

yi0zb3m4

yi0zb3m41#

我的意见是:
就像其他人说的那样,这是一个javascript的工作。在管理页面Django pases jquery。它被称为django.jQuery。所以你会做@Ashfaq建议的事情。你会创建一个custom_script.js并添加到Media元类中。
基本上(如@Ashfaq):

class MyModelAdmin(admin.ModelAdmin):
    class Media:
        js = ("js/custom_script.js",)

custom_script.js将是这样的(假设您的select字段名为id_category):

django.jQuery( document ).ready(function() {
    console.log( "ready!" );
    django.jQuery('#id_category').change(function() {
      alert( "Handler for #id_category was called." );
    });
});

ready函数将保证设置处理程序。

yyyllmsg

yyyllmsg2#

我认为在这里起作用的是添加jQuery +您的自定义javascript,并使用事件/点击任何您想要的元素。

class MyModelAdmin(admin.ModelAdmin):
    class Media:
        js = ("js/custom_script.js",)

在custom_script中,您可以根据需要添加单击或更改事件。

8i9zcol2

8i9zcol23#

在另一个SO问答中找到了阿比吉斯K的一个很好的答案:
How can i add a onchange js event to Select widget in Django?

reciept=forms.ChoiceField(reciept_types, widget = forms.Select(attrs = {'onchange': "myFunction();"}))

为了清楚起见,这是您在小部件定义中添加的内容:attrs = {'onchange': "myFunction();"},用于定义当onchange事件触发时将调用哪个JS函数。
在ModelAdmin中,您可以定义一个您想要访问的JavaScript文件,在该文件中您可以定义函数“myFunction()":

@admin.register(AnswerTree)
class AnswerTreeAdmin(ModelAdmin):
    form = AnswerTreeForm
    ...

    class Media:
        js = ("admin_js/answertree_modeladmin.js",)

Django关于在ModelAdmin上定义资产(如JavaScript & CSS)的文档:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#modeladmin-asset-definitions
还有一点很有用,我发现你可以通过attrs = {'onchange': "myFunction(this.value);"}来访问输入的值,注意我现在传递的是参数this.value
JavaScript函数定义示例:

myFunction = (value) => {
    console.log(value)
}

OR

myFunction(value) {
    console.log(value)
}

相关问题