Javascript 如何使下拉列表自动填充Django中的其他字段
我有一个巨大的Django项目,我正在进行调整。我需要有一个下拉字段,自动填充管理页面中的其他两个只读字段。我希望在不保存或刷新页面的情况下执行此操作。我希望能够看到只读字段在我更改下拉选择时立即更改 现在,我有下拉列表和两个只读字段,但不是立即工作。只读字段仅在保存时更新以匹配下拉列表,然后再次打开该实例。为此,我覆盖了save方法: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]
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