If we are talking only about icons in Django Admin: Wagtail (a CMS based on Django) solves it for their custom Admin Views in a similar way to your proposed Meta attribute [0].

The analog solution for django admin would be, that the ModelAdmin gets an 'icon' attribute, which does not contain the whole html-snippet, but instead only the icon specific class name:

For Example:

from django.contrib import admin
from .models import Author

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
   icon = 'fa-user'

That would be a nicer solution in my point of view, especially I find this level of coupling acceptable.

Cheers,

Mark

[0] https://docs.wagtail.org/en/stable/reference/contrib/modeladmin/index.html#a-more-complicated-example


Am 18.02.23 um 21:31 schrieb Marty:
Yeah, I've tried to create templatetag like this:

@register.simple_tag
def get_module_icon(model, app):
    if app == 'auth':
        if model == 'Groups':
            return '<i class="fas fa-users"></i>'
        elif model == 'Users':
            return '<i class="fas fa-user"></i>'
    elif app == 'core':
        elif model == 'Generations':
            return '<i class="fas fa-layer-group"></i>'
        elif model == 'Product models':
            return '<i class="fas fa-server"></i>'
    elif app == 'bto':
        if model == 'Components':
            return '<i class="fas fa-microchip"></i>'
        elif model == 'Layouts':
            return '<i class="fas fa-drafting-compass"></i>'
        elif model == 'SKU configurations':
            return '<i class="fas fa-gavel"></i>'
        elif model == 'XML component definitions':
            return '<i class="fas fa-cubes"></i>'
    return ''

I don't like this way so much and I thought it would be easier even for other potentional developers who would like to use icons so it seemed putting it to Meta would be better. However I get mixing HTML to model is not good. 🙂
What would be the most clean way to use icons like that?

On Saturday, February 18, 2023 at 8:23:28 PM UTC+1 Arthur Pemberton wrote:

    I too find the idea of hard coded HTML in a Python file to be
    inelegant, for what it's worth.

    Arthur Pemberton

    On Sat, 18 Feb 2023 at 08:12, 'Adam Johnson' via Django developers
    (Contributions to Django itself) <django-d...@googlegroups.com> wrote:

        Putting HTML for the admin in model definitions is a bit too
        coupled.

        I think you may be able to add icons already by overriding the
        admin template - can you try playing around with that?

        On Mon, Feb 6, 2023 at 12:07 AM Yeonggwang Yang
        <immuta...@gmail.com> wrote:

            that sounds good with me

            2023년 2월 5일 일요일 오전 9시 36분 17초 UTC+9에 Marty님이
            작성:

                Hi all,

                Recently, it's trend to use icons or emoji before menu
                items and I like this idea because IMHO people orient
                better and more quickly when they see picture.

                What about to add this feature to native django? I
                thought the easiest way would be to add new Meta
                option to Model. The default Meta icon would be empty
                string so everything would work like now. If I want to
                make menu more readable, I just add emoji (🔨) or html
                (Awesome font - *<i class="fa-solid fa-hammer"></i>* ,
                Bootstrap icon - *<i class="bi bi-hammer"></i>*, etc.)
                to Meta icon.

                Code example:

                _Model:_
                class Hammer(models.Model):
                    ...

                    Meta:
                        icon = '<i class="fa-solid fa-hammer"></i>'

                _app_list.html template:_
                ...
                <th scope="row">{{model.icon}} {{model.name
                <http://model.name>}}</th>
                ...

                Final result:
                admin navbar.png

                Maybe own icon could have even the parent app
                (AppConfig). And the model icon could be in breadcrumbs.

                What do you think about this idea? 🙂

-- You received this message because you are subscribed to
            the Google Groups "Django developers (Contributions to
            Django itself)" group.
            To unsubscribe from this group and stop receiving emails
            from it, send an email to django-develop...@googlegroups.com.
            To view this discussion on the web visit
            
https://groups.google.com/d/msgid/django-developers/6c859cc5-ea41-4695-9fcf-5cd435310364n%40googlegroups.com
            
<https://groups.google.com/d/msgid/django-developers/6c859cc5-ea41-4695-9fcf-5cd435310364n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- You received this message because you are subscribed to the
        Google Groups "Django developers (Contributions to Django
        itself)" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to django-develop...@googlegroups.com.

        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/django-developers/CAMyDDM1L4rmQ3qomxOqD%2BmugXcsmx7NrOPAh8a53wR9G5q%3D3Gw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/django-developers/CAMyDDM1L4rmQ3qomxOqD%2BmugXcsmx7NrOPAh8a53wR9G5q%3D3Gw%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/1f461742-7fe6-4798-97e9-a8133bd2364bn%40googlegroups.com <https://groups.google.com/d/msgid/django-developers/1f461742-7fe6-4798-97e9-a8133bd2364bn%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "Django 
developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/7234af96-cb05-b6b2-7150-758b2e68536d%40posteo.de.
  • Mod... Marty
    • ... Yeonggwang Yang
      • ... 'Adam Johnson' via Django developers (Contributions to Django itself)
        • ... Arthur Pemberton
          • ... Marty
            • ... Mark Niehues
              • ... Jacob Rief
                • ... Marty
                • ... Brice Parent
                • ... Jacob Rief
                • ... Bogdan Barna
                • ... Thibaud Colas

Reply via email to