首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据通过querystring传递的条件,自定义Admin changelist中的addlink

根据通过querystring传递的条件,自定义Admin changelist中的addlink
EN

Stack Overflow用户
提问于 2012-05-09 20:48:23
回答 1查看 1.5K关注 0票数 0

我更改了管理视图,如下所述:How Do I Show Django Admin Change List View of foreign key children?

我有客户->项目->活动我通过以下方法获取项目的所有活动:

代码语言:javascript
复制
def related_actions(self, obj):
    from django.core import urlresolvers
    url = urlresolvers.reverse("admin:workflow_action_changelist")
    lookup = u"project__exact"
    text = obj.name
    return u"<a href='%s?%s=%d'>%s</a>" % (url, lookup, obj.pk, text)

现在我想在change_list中自定义添加链接。/workflow/templates/admin/workflow/action/change_list.html中的模板会覆盖管理change_list,但所有三个模型都使用相同的模板。因此,我认为当我更改行时,一定有更好的解决方案,如模板中的harcode param

代码语言:javascript
复制
<a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">

代码语言:javascript
复制
<a href="add/?actionstatus=5" class="addlink">

在新的操作表单中预先选择了操作类别。但是我如何才能覆盖每个模型中的addlink。

我必须在projectsview中通过参数获取actionstatus:

代码语言:javascript
复制
/workflow/action/?project__exact=5

有什么建议吗?

在动作模型中有没有类似这样的伪代码?

代码语言:javascript
复制
 def add(self)
     get param projectid from url 
     return "<a href='/workflow/action/add/%s' target='_blank'>Add Action</a>" % (parent.project id)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-09 21:56:36

AFAIK,没有这样的add

您可以通过扩展以下内容来自定义change_list.html,,特别是它的object-list-item块:

代码语言:javascript
复制
{% block object-tools-items %}
  <li>
    <a href="{% url cl.opts|admin_urlname:'add' %}{% if is_popup %}?_popup=1{% else %}?{% endif %}{% if "project" in cl.params %}&amp;project={{ cl.params.project }}{% endif %}" class="addlink">
      {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
    </a>
  </li> 
{% endblock %}

这里,clChangeList实例。cl.params是经过过滤的request.GET。该代码检查querystring中是否有project,并将其值附加到生成的addlink。

您还可以编写JS代码,以便在changelist页面加载完成时更新add link。就像这样

代码语言:javascript
复制
(function($){
$(function(){
var m = window.location.search.match(/[?&]project=([^&]*)/);
if (m){
    var link = $('a.addlink').attr('href');
    $('a.addlink').attr('href', link+(link.match(/\?_popup=1$/)?'&':'?')+'project='+m[1]);
}
});
})(django.jQuery);

检查this以了解常规参数操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10516473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档