【问题标题】:Django admin add view popup dialog boxDjango admin 添加视图弹出对话框
【发布时间】:2015-02-13 19:29:03
【问题描述】:

如何在 Django 管理员的添加视图弹出框中传入一个额外的 GET 参数?

基本上我有一个+ 登录外键,当我单击它时,它会打开一个弹出框来添加该类型的新对象。

问题是我在弹出框中使用了一些自定义的 Ajax 代码,我需要找到一种方法来仅更新打开对话框的字段(假设可能还有其他外键字段)。

我能想到的唯一解决方案是以某种方式传入GET 参数,以便我知道应该更新哪个字段。

有什么想法吗?我只需要朝着正确的方向推动才能完成这项工作

现在我正在做这样的事情来更新字段。我想让这个动态

if ($('#id_avatar').length) {
  $('#id_avatar', opener.document).append($('<option selected="selected"></option>').attr('value', data.obj_id).text(data.obj__unicode__));
     }

我想我以某种方式重新加载原始页面中的选择框可能是一个选项,因为此时它已经保存在数据库中。

【问题讨论】:

    标签: javascript jquery python django django-admin


    【解决方案1】:

    我最终覆盖了change_form.html 中的字段集。不确定它是否是最好的方法,但它似乎对我有用。 现在我可以传递一个source_field 来了解哪个字段称为弹出窗口,以便稍后我可以使用 Jquery 更新正确的字段

    {% for fieldset in adminform %}
    {#  {% include "admin/includes/fieldset.html" %}#}
        <fieldset class="module aligned {{ fieldset.classes }}">
            {% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
            {% if fieldset.description %}
                <div class="description">{{ fieldset.description|safe }}</div>
            {% endif %}
            {% for line in fieldset %}
                <div class="form-row{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% if not line.has_visible_field %} hidden{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
                    {% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %}
                    {% for field in line %}
                        <div{% if not line.fields|length_is:'1' %} class="field-box{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %} hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
                            {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
                            {% if field.is_checkbox %}
                                {{ field.field }}{{ field.label_tag }}
                            {% else %}
                                {{ field.label_tag }}
                                {% if field.is_readonly %}
                                    <p>{{ field.contents }}</p>
                                {% else %}
                                    {% if field.field.name == 'avatar' %}
                                        <select id="id_avatar" name="avatar">
                                            <option value="" selected="selected">---------</option>
                                        </select><a href="/admin/core/multimedia/add/?_to_field=id&source_field=avatar" class="add-another" id="add_id_avatar" onclick="return showAddAnotherPopup(this);"> <img src="/static/admin/img/icon_addlink.gif" width="10" height="10" alt="Add Another"></a>
                                    {% else %}
                                        {{ field.field }}
                                    {% endif %}
                                {% endif %}
                            {% endif %}
                            {% if field.field.help_text %}
                                <p class="help">{{ field.field.help_text|safe }}</p>
                            {% endif %}
                        </div>
                    {% endfor %}
                </div>
            {% endfor %}
        </fieldset>
    {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      相关资源
      最近更新 更多