Django Admin:根据先前的字段值填充字段

2023-12-21

我在 django admin 中有一个模型如下

ChoiceA= (
      ("on-false","on-false"),
       ("on-true","on-true"),
     )

ChoiceB =  (
        ("always","always"),
        ("never","never"),
       )
   id = models.CharField(verbose_name="Field",max_length=32)
   type = models.CharField(verbose_name="Expression",max_length=32)
   action = models.CharField(max_length=32, choices=x)

现在基于用户输入的类型,即如果用户输入 type =“a”,则操作的选择应设置为 ChoiceA,如果用户输入 type =“b”,则操作的选择应设置为 ChoiceB。我怎样才能在 Django Admin 中实现这一目标?

Edit:

action_change.js

jQuery(document).ready(function(){
$("#id_type").change( function(event) {
$.ajax({
        "type"     : "POST",
        "url"      : "/action_choices/",
        "dataType" : "json",
        "cache"    : false,
        "error"   :  alert("hello"),  
        "success"  : function(json) {
            $('#id_action >option').remove();
            for(var j = 0; j < json.length; j++){
                $('#id_action').append($('<option></option>').val(json[j][0]).html(json[j][1]));
            }
        }

});
});
});

您可以使用 Ajax 和 jQuery 来实现它:

模型.py:

type   = models.CharField(verbose_name="Expression",max_length=32)
action = models.CharField(max_length=32, choices = (('', ''), ))

管理员.py:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('type', )

    class Media:
        js = ['/static/js/action_change.js']

admin.site.register(MyModel, MyModelAdmin)

urls.py:

url(r'^action_choices/', 'myproject.myapp.views.action_choices'),

视图.py:

def action_choices(request): 
    action_list = []
    ChoiceA = ("on-false", "on-true")
    ChoiceB = ("always", "never")

    action_type = request.GET.get('action_type')
    if str(action_type).lower() == 'a':
        choices = ChoiceA
    elif str(action_type).lower() == 'b':
        choices = ChoiceB
    else:
        choices = ()

    [action_list.append((each,each)) for each in choices]
    json = simplejson.dumps(action_list)
    return HttpResponse(json, mimetype='application/javascript')

创建文件action_change.js在静态文件夹中包含以下内容并在中定义正确的路径class Media of ModelAdmin.

action_change.js

(function($){   
    $(function(){
        $(document).ready(function() {
            $('#id_type').bind('keyup', type_change);           
            $('#id_action >option').show();
        });
});  
})(django.jQuery);

// based on the type, action will be loaded

var $ = django.jQuery.noConflict();

function type_change()
{
    var action_type = $('#id_type').val();
    $.ajax({
            "type"     : "GET",
            "url"      : "/action_choices/?action_type="+action_type,
            "dataType" : "json",
            "cache"    : false,
            "success"  : function(json) {
                $('#id_action >option').remove();
                for(var j = 0; j < json.length; j++){
                    $('#id_action').append($('<option></option>').val(json[j][0]).html(json[j][1]));
                }
            }           
    })(jQuery);
}

这对于您所要求的场景应该可以很好地工作。我在下面给出我的建议:

模型.py

type   = models.CharField(verbose_name="Expression",max_length=32, choices = (('a', 'a'), ('b', 'b'), ))
action = models.CharField(max_length=32, choices = (('', ''), ))

action_change.js(第 5 行)

$('#id_type').bind('change', type_change);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Admin:根据先前的字段值填充字段 的相关文章

随机推荐

  • 在Angular中,创建控件后如何将Validator添加到FormControl?

    我们有一个具有动态构建表单的组件 添加带有验证器的控件的代码可能如下所示 var c new FormControl Validators required 但假设我想添加第二个验证器later 我们怎样才能做到这一点 我们在网上找不到任何
  • 如何使用 MultiByteToWideChar?

    我想转换成普通的string to a wstring 为此 我尝试使用 Windows API 函数MultiByteToWideChar https learn microsoft com en us windows desktop a
  • 构建 DLL 时;我应该链接到什么类型的 CRT?

    在窗户中 有 2 个选项可链接到 CRT 多线程 静态链接 多线程 动态链接 有人可以阐明这里的最佳实践是什么吗 我应该 静态 链接到 CRT 还是进行动态链接 如果我进行动态链接 并且编写一个使用我的 DLL 另一个第 3 方 DLL 正
  • 从https页面转到http页面时是否发送HTTP标头Referer?

    经过几次测试后 我开始得出这样的结论 当用户从 https 页面单击到 http 页面时 浏览器不会发送 Referer HTTP 标头 这是出于什么安全原因 是在标准中的某个地方定义的吗 The HTTP RFC http www w3
  • 大数字的 NumberFormatter 问题

    我尝试使用此代码将字符串转换为数字 反之亦然 此代码必须打印相同的输出 但其输出不正确 谁能帮我 let formatter NumberFormatter NumberFormatter formatter locale Locale i
  • 如何在十亿像素位图上实现平移/缩放?

    在我的项目中 我使用来自高分辨率扫描仪的 未压缩的 16 位灰度 十亿像素图像来进行测量 由于这些位图无法加载到内存中 主要是由于内存碎片 我正在使用图块 以及光盘上的图块 TIFF 看StackOverflow 主题 https stac
  • ASP.NET MVC 2 并列为隐藏值?

    Hi 我有一个包含列表的 View 类 该列表解释了用户已上传的可用文件 使用 html 助手呈现 为了在提交时维护此数据 我在视图中添加了以下内容 我希望 mode ModelView Files 列表将返回到提交操作 但事实并非如此 是
  • 在浏览器中模拟linux终端

    我读过 Fabrice Bellard 在浏览器中模拟 Linux 的内容 Fabrice Bellard 的 Javascript Linux 模拟器如何工作 https stackoverflow com questions 60304
  • 如何编写Python表达式来过滤掉某些字符串

    有一个由多个数字组成的字符串 例如 12 03 5 897 7 10 74 0 103 12 05 6 4 1 8 98 我想用Python正则表达式仅输出那些带有 ONLY 的数字single dot 例如 12 03 and 5 897
  • 三字母组在 C++ 中仍然有效吗?

    我们都知道历史好奇心 https stackoverflow com a 1234618 560648那是二合字母和三合字母 http en wikipedia org wiki Digraphs and trigraphs 但随着近年来
  • 通过C#检索CRM中所有帐户的列表?

    我正在尝试从 CRM 2011 检索所有帐户记录 以便我可以使用 ForEach 循环循环浏览它们并填充下拉列表 我正在读这篇文章 检索实体列表 https stackoverflow com questions 7409091 retri
  • ARM TrustZone 的安全/正常世界与操作系统的内核/用户模式或 x86 的 Ring0/1/2/3?

    我读了这样的文档TrustZone 安全白皮书 http infocenter arm com help topic com arm doc prd29 genc 009492c PRD29 GENC 009492C trustzone s
  • 加密数据作为字符串

    我对加密和 C 语言很陌生 所以这可能是一个明显的问题 但我找不到解决问题的方法 我正在 C 上制作一个应用程序 并在 Linux 中使用 openssl 进行加密 我从这个 url 获得了一个 C 代码示例 该代码允许使用 SHA 加密和
  • 如何使用 dockerfile 在 aws sagemaker 中运行 python 文件

    我有一个 python 代码和一个经过预先训练的模型 并且有一个 model pkl 文件与我在代码所在的同一目录中 现在我必须运行它或将其部署到 aws sagemaker 但没有得到任何解决方案由于aws sagemaker仅支持两个命
  • Html5 拖放到 svg 元素上

    我正在尝试遵循 html5 拖放教程here http www html5rocks com tutorials dnd basics 我无法得到dragstart要注册的事件rect元素 如果我将事件从draggable to mouse
  • Java进程内存使用量不断增加

    前提条件 具有 16 GB RAM 的电脑 Ubuntu 16 10 x64 上安装了 JDK 1 8 x 一个基于 Spring 的标准 Web 应用程序 部署在 Tomcat 8 5 x 上 Tomcat 配置了以下参数 CATALIN
  • Python/Django 时间戳,包括毫秒

    我需要按以下格式打印 并传递给外部 API 当前日期时间 DD MM YYYY HH MM SS SSS 最后 3 个SSS表示毫秒 我知道如何使用 Python 打印当前的日期时间 最多微秒 strftime http docs pyth
  • 检查 CalledProcessError 的输出

    我正在使用 python 子进程模块中的 subprocess check output 来执行 ping 命令 我是这样做的 output subprocess check output ping c 2 W 2 1 1 1 1 它引发
  • 如何正确配置 NSFetchedResultsController

    我将 NSFetchedResultsController 放入我的代码中 这样我就可以对表视图数据进行很好的自动分段 所以我正在运行测试以确保一切正常 我的持久存储中有一个 Book 实体 我将首先以旧方式执行获取 然后尝试使用 NSFe
  • Django Admin:根据先前的字段值填充字段

    我在 django admin 中有一个模型如下 ChoiceA on false on false on true on true ChoiceB always always never never id models CharField