Django: изменить цвет строки для специального значения в интерфейсе администратора - PullRequest
2 голосов
/ 16 января 2011

Я хочу изменить цвет строки / цвета столбца, когда вычисляется специальное значение для одного из параметров admin list_display на сайте администратора.Я новичок в Джанго.Я не знаю, как взломать интерфейс администратора. Я решил эту проблему для своего собственного приложения следующим образом: я пишу функцию для расчета сбалансированного времени, которая возвращает значение timedelta:

models.py

def balanced_time(self):
    t = self.gew_zeit - datetime.now()
    ...
    return timedelta(t.days, t.seconds, 0)

и проверьте условие для цвета с помощью цветовой функции:

def color():
    return gew_zeit - datetime.now() > timedelta(0, 18000, 0)

Для проверки значения balance_time я отображаю это app.html таблица шаблонов:

<table summary="This is one table from a database">

    <caption>table entries of a model</caption>

    <thead>

        <tr>
            <th align="left" scope="col">Count</th>
            <th align="left" scope="col">Balanced Time</th>

        </tr>

    </thead>

    <tbody>

    {% if order_items %}

        {% for item in order_items %}

            <tr>
                <td align="left" >{{ forloop.counter }}</td>
                {% if item.color %}
                    <td>{{ item.balanced_time }}</td>
                {% else %}
                    <td style="color:#ff0000;" >{{ item.balanced_time }}</td>
                {% endif %}

            </tr>

        {% endfor %}

    {% endif %}

    </tbody>

</table>

Теперь текст в столбце balance_time окрашен в красный цвет, когда его сбалансированное время составляет <5 часов.Все это прекрасно работает, но я не знаю, как перенести это поведение в шаблон admin change_list_results.html или есть еще один более эффективный способ управления этим для сайта администратора.Я также нашел следующую <a href="https://stackoverflow.com/questions/3442881/change-font-color-for-a-field-in-django-admin-interface-if-expression-is-true"> link1 , а также эту ссылку .Но они не работают для меня.Возможно, я делаю что-то не так.

1 Ответ

3 голосов
/ 19 января 2011

В конце концов, следующая ссылка работает.

Проблема заключалась в том, что хэш-символ в цветовом коде жестко задан в примере кода "rebus", см.

return '<span style="color: #%s;">%s</span>' % (
                             self.color_code, self.first_name)
...