【问题标题】:Dynamic (JS/Ajax) field updates w/ Django admin interface带有 Django 管理界面的动态(JS/Ajax)字段更新
【发布时间】:2011-06-15 02:50:09
【问题描述】:

这可能是一个复杂的解释。就这样吧。

在这个问题的范围内有两个模型,AssetAssetGroupAssetGroup 包含有关资产“组”的信息(例如品牌、型号、规格),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)向客户显示选定的AssetGroupasset_description

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

【问题讨论】:

    标签: python django database-design models


    【解决方案1】:

    您可以自定义 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 %}
    

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 2023-03-07
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 2012-01-23
      相关资源
      最近更新 更多