Javascript 如何使下拉列表自动填充Django中的其他字段

Javascript 如何使下拉列表自动填充Django中的其他字段,javascript,python,django,django-models,django-forms,Javascript,Python,Django,Django Models,Django Forms,我有一个巨大的Django项目,我正在进行调整。我需要有一个下拉字段,自动填充管理页面中的其他两个只读字段。我希望在不保存或刷新页面的情况下执行此操作。我希望能够看到只读字段在我更改下拉选择时立即更改 现在,我有下拉列表和两个只读字段,但不是立即工作。只读字段仅在保存时更新以匹配下拉列表,然后再次打开该实例。为此,我覆盖了save方法: def save(self, *args, **kwargs): self.firstname = self.fullname.split()[0]

我有一个巨大的Django项目,我正在进行调整。我需要有一个下拉字段,自动填充管理页面中的其他两个只读字段。我希望在不保存或刷新页面的情况下执行此操作。我希望能够看到只读字段在我更改下拉选择时立即更改

现在,我有下拉列表和两个只读字段,但不是立即工作。只读字段仅在保存时更新以匹配下拉列表,然后再次打开该实例。为此,我覆盖了save方法:

def save(self, *args, **kwargs):
    self.firstname = self.fullname.split()[0]
    self.lastname = self.fullname.split()[1]
    super().save(*args, **kwargs)  
我知道有一种javascript onchange策略可以做到这一点,我只是有点困惑如何将其应用于Django框架,使其按预期的方式运行。任何帮助都将不胜感激

更新: 我想我明白了。在位于contrib/admin/templates/admin中的change_form.html中,可以将javascript添加到after_field_sets块中,以便首先添加字段,然后可以使用其id对其进行操作,您可以通过打开页面上的开发者视图来找到该id。 我仍然需要测试和调试,但这段代码似乎可以工作:

      <script type="text/javascript">
      document.getElementById("id_firstname").readOnly = true;
      document.getElementById("id_lastname").readOnly = true;
        (function($){
            $("select").change(function(){
                document.getElementById("id_firstname").value = document.getElementById("id_fullname").value.split(" ")[0]
                document.getElementById("id_lastname").value = document.getElementById("id_fullname").value.split(" ")[1]
            }).change();
        })(django.jQuery);
      </script>

document.getElementById(“id_firstname”).readOnly=true;
document.getElementById(“id_lastname”).readOnly=true;
(函数($){
$(“选择”).change(函数(){
document.getElementById(“id\u firstname”).value=document.getElementById(“id\u fullname”).value.split(“”[0]
document.getElementById(“id\u lastname”).value=document.getElementById(“id\u fullname”).value.split(“”[1]
}).change();
})(django.jQuery);

注意:您需要在templates/admin/your app/your model中放置编辑好的change_form.html的副本,Django框架将使用此版本的change_form.html作为您在文件夹结构中指定的特定模型的原始版本的覆盖。

您好,您的问题中缺少一些内容。你尝试了什么,你得到的错误,你的html和javascript