2009-10-01 6 views
0

Existe-t-il un moyen simple et courant d'appliquer un style personnalisé à un élément de la liste de modifications de l'administrateur en fonction de ses propriétés?Mise en forme de certaines lignes de la liste de modifications de l'administrateur

mise à jour

Pour être plus précis: disons que j'ai un simple objet de modèle.

Foo 

    field1 
    field2 
    field3 

    @property 
    property1() 
    @property 
    property2() 

ModelAdmin.list_display est défini comme un sous-ensemble des champs disponibles, donc pas tous les attributs (champ/propriété) est affiché dans le tableau de la liste des modifications.

Je voudrais appliquer une classe CSS personnalisée à la ligne de l'objet lorsque certaine condition est remplie, par exemple: si foo_instance.property1 est True puis ajouter la classe bar à l'élément tr correspondant.

+0

double possible de [Changer la couleur de ligne dans Django Liste Admin] (http://stackoverflow.com/questions/4014914/change-row-colour-in-django-admin-list) – CDMP

Répondre

0

Maintenant, copiez le modèle admin/base_site.html à partir de la valeur par défaut Django répertoire de modèles d'administration (django/contrib/admin/templates) dans un sous-répertoire admin le répertoire que vous utilisez dans TEMPLATE_DIRS. Par exemple, si votre TEMPLATE_DIRS inclut "/ home/mon_nom_utilisateur/mes_templates", comme ci-dessus, copiez django/contrib/admin/templates/admin/base_site.html dans /home/my_username/mytemplates/admin/base_site.html. Ne pas oublier ce sous-répertoire admin.

Notez que l'un des modèles d'administration par défaut de Django peut être remplacé. Pour remplacer un modèle, faites simplement la même chose qu'avec base_site.html - copiez-le du répertoire par défaut dans votre répertoire personnalisé, et apportez des modifications.

de django's tutorial

+0

Je connais les modèles d'administration redondants; le point est que je ne vois aucun moyen de le faire sans un piratage profond, puisque la liste de changement utilise la balise d'inclusion result_list qui renvoie la liste des objets HTML (probablement des éléments formset). – ohnoes

+0

* en fonction de ses propriétés * @ ma question est le problème clé ici – ohnoes

0

Que voulez-vous dire par « changement élément de la liste » et « ses propriétés »? En utilisant les sélecteurs CSS 2 ou CSS 3, vous pouvez faire certaines choses. Sinon, vous pourriez être capable de le faire facilement en utilisant jQuery (ou autre). Comme c'est simplement lié à la présentation, je pense que ce serait la solution la plus propre.

+0

J'ai mis à jour la question avec quelques détails. – ohnoes

0

Old question, mais si vous trébuchez à travers, les conseils suivants pourraient être utiles.

Vous pouvez utiliser django-liststyle pour personnaliser vos lignes de liste d'attente d'administration.

Il est très simple à mettre en œuvre votre exemple:

class FooAdmin(admin.ModelAdmin, ListStyleAdminMixin): 
    ... 
    def get_row_css(self, obj, index): 
     if obj.property1: 
      return 'bar' 
     return '' 

Django Suit (pas libre) offre également "Liste rangée et attributs cellule" de personnalisation de style

Questions connexes