Как добавить стили в help_text поля модели Django в общих c представлениях - PullRequest
0 голосов
/ 05 августа 2020

У меня есть модель Django, в которой я хочу отображать текст справки, как показано ниже:

class StaffRoles(models.Model):
    role = models.CharField(primary_key=True, max_length=8, verbose_name="Role", help_text='Field accepts all uppercase only')
    role_short_text = models.CharField(max_length=35, verbose_name='Short Desc')
    role_long_text = models.CharField(max_length=250, verbose_name='Description')

Теперь, когда я использую модель в Django generi c CreateView, чтобы добавить новая роль , текст справки отображается на странице в стиле по умолчанию рядом с полем ввода role.

Я пытаюсь добавить некоторый стиль к отображаемый текст справки, и с этой целью я попытался изменить свой код шаблона, как показано ниже:

Шаблон код:

...
{% for field in form.visible_fields %}
    {% if field.name == "role" %}
        {{ field }}
        <small style="color:teal">{{ field.help_text|safe }}</small>
    {% endif %}
{% endif %}

Однако, на мой тревожно, текст справки отображается дважды - т.е. результирующий текст справка в результате добавления новой строки кода плюс текст, который был первоначально отображен.

Есть ли способ Я могу отображать текст справки с добавлением некоторых css стилей?

1 Ответ

0 голосов
/ 05 августа 2020

попробуйте этот код:

from django.utils.safestring import mark_safe
from django.utils.translation import gettext_lazy as _


class StaffRoles(models.Model):
    role = models.CharField(primary_key=True, max_length=8, verbose_name="Role", 
        help_text = mark_safe(_(
            '<small style="color:teal">Field accepts all uppercase only</small>'
        ))
    )

[..] 

или вы можете изменить стиль по умолчанию для модуля django admin contrib.

Обновить

В качестве второго варианта вам необходимо переопределить change_form.html, чтобы добавить собственный css файл.

  • в templates создать папки, такие как /admin/YOUR-APP/change_form.html
  • добавить этот код
{% extends "admin/change_form.html" %}
{% block extrastyle %}
<style>
/* your custom style */
<style>
{% endblock %}

взгляните на базовый шаблон для пакета admin contrib под venv\Lib\site-packages\django\contrib\admin\templates\admin (я использую windows, используя venv)

и обратитесь к https://docs.djangoproject.com/en/3.1/ref/contrib/admin/#overriding -admin-templates подробнее ..

также вы можете полностью переопределить внешний вид интерфейса администратора, уже есть готовые к использованию темы на pypi.

...