动态(JS/Ajax)字段更新w/Django-admin

2024-05-13 00:59:08 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个复杂的解释。给你。在

在这个问题的范围内有两个模型,Asset和{}。AssetGroup包含有关资产“组”的信息(例如品牌、型号、规格),而{}包含单个资产信息(例如成本、购买日期、购买原因、资产组)。在

显然,这两个模型之间存在某种关系(例如,资产属于某个“集团”)。在

因此,这家公司的一个人使用Django的管理界面将产品添加到数据库中,他们必须为他们的资产选择一个组。资产组的选择框显示了每个资产组的__unicode__方法(当然),我使用的__unicode__方法是资产组品牌、模型和子模型的串联:

def __unicode__(self):
    return self.asset_brand + " " + self.asset_product + " - " + self.asset_subproduct

很简单。在

现在,AssetGroup表中有多个条目以相同的__unicode__方法输出结束,例如,有两个条目具有:

  • asset_brand = 'Apple'
  • asset_product = 'Macbook Pro'
  • asset_subproduct = 'Mid-2009'

所以他们看起来一模一样。它们之所以是单独的条目,首先是因为AssetGroup中有一个名为asset_description的字段,它保存了关于AssetGroup的附加信息(例如,第一个Macbook Pro AssetGroup对象可能有4GB的RAM,第二个AssetGroup对象可能有8GB的RAM)。在

因此,当客户机将资产输入数据库时,显然有两个不同的产品在选择框中看起来是相同的。我想(动态地,使用JS)在客户机向数据库输入Asset时,向客户机显示所选的AssetGroup的{}。在

在Django有什么可以做的吗?如果没有,我想我可以重新设计我的数据库,但我真的不想。在


Tags: django方法模型self信息数据库客户机产品
1条回答
网友
1楼 · 发布于 2024-05-13 00:59:08

您可以自定义Django admin为您的特定模型使用的模板。您不必编写整个模板,只需在{%block extrahead%}模板标记中添加所需的javascript。并使用jQuery设置事件处理。Django在管理接口中使用jQuerydjango.jQuery. 在

为了让django找到您的自定义模板,您必须将其放置在正确的位置。 请看一下自定义管理模板部分:http://www.djangobook.com/en/1.0/chapter17/

以下是一个简短的例子:

{% block extrahead %}

<script type="text/javascript" src="{{ ADMIN_MEDIA_PREFIX }}jquery.min.js"></script>

<script type="text/javascript">
  django.jQuery(function($) {
    // set your handlers, etc.
  });
</script>
{% endblock %}

相关问题 更多 >