0

编辑了我的代码:在模型管理员的自定义字段集中:

{%load app_extras %}

{% if field.field.name == 'mobile' %}
    <a target="hiddenIframe" href="http://url_to_call.php?exten={{request.user.employee_profile.extension}}&phone={{ field.field.value }}">Click-to-call</a>
{% my_mobile mobile=field.field.value as mob %}
    {% endif %}

    {% if field.field.name == 'sms_message' %}{{ mob }}
        <a target="hiddenIframe" href="http://url_for_send_sms.php?sms_message={{ field.field.value }}&phone={{ mob }}">Click-to-send-sms</a>
    {% endif %}

在这里,我尝试同时访问模型管理表单的手机号码和 sms_message 字段。

我认为我需要使用自定义标签,所以我创建了 templatetags 模块,其中 app_extras.py 包含分配 mobile 值并返回它的函数,如下所示:

@register.assignment_tag
def my_mobile(*args, **kwargs):
    m_mobile = int(kwargs['mobile'])
    return {'m_mobile': m_mobile }

在上面的模板 fiedset.html 中注意更改:这将返回一个 Long 值:{'m_mobile': 1234534519L} 在浏览器上看到超链接的 url 时显示:

http://url_for_send_sms.php/?sms_message=fgdfg&phone= {%27m_mobile%27:%1234534519L}

如何访问手机号码?我的自定义标签是否正确?

4

2 回答 2

0

我将标签中的输出格式化为:

@register.assignment_tag
def my_mobile(*args, **kwargs):
    m_mobile = ("%d" %int(kwargs['mobile']))
    return {'m_mobile': m_mobile }

在模板 fieldset.html 中将代码更改为:

{% if field.field.name == 'sms_message' %}
        <a target="hiddenIframe" href="http://url_for_send_sms.php?sms_message={{ field.field.value }}&phone=={{ mob.m_mobile }}">Click-to-send-sms</a>
    {% endif %}

重要提示:手机号码和 sms_message 都在 django modeladmin 中字段集的同一行(在我的例子中)。所以上面的代码属于循环 {% for line in fieldset %} 循环

于 2014-11-29T06:13:43.017 回答
-1

尝试

{% for ln in fieldset %}
    {% for fld in ln %}
        {% if f.field.name == 'mobile' %}
            {{ f.field.value }}
        {% endif %}
    {% endfor %}
{% endfor %}

也许这不是最好的解决方案......但它是解​​决方案:)

于 2014-11-28T10:28:59.583 回答