这可能是一个复杂的解释。它来了。
在这个问题的范围内有两个模型,Asset
和AssetGroup
。AssetGroup
包含关于资产"组"的信息(例如品牌、型号、规格),Asset
包含单个资产信息(例如成本、购买日期、购买原因、资产组)。
显然,这两个模型之间存在关系(例如,资产属于某个"组")。
因此,这家公司的一个人使用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)。
因此,很明显,当客户将资产输入数据库时,有两种不同的产品在选择框中看起来是一样的。当客户端在数据库中输入Asset
时,我想(使用JS动态地)向客户端显示所选的AssetGroup
的asset_description
。
Django有什么能做到这一点吗?如果没有,我想我可以重新设计我的数据库,但我真的不想。
您可以自定义Django管理员为您的特定模型使用的模板。您不必编写整个模板,相反,您只需在{%block extrahead%}模板标记中添加所需的一堆javascript即可。并使用jQuery设置事件处理。Django在Django.jQuery.下的管理界面中使用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 %}