12
votes

Utilisation de méthodes arbitraires ou d'attributs comme champs sur les objets Django Modeladmin?

Utilisation de django 1.1:

Le DJANGO admin Docs décrit à l'aide de méthodes arbitraires ou d'attributs sur un objet MODERDMIN dans l'attribut list_display . Il s'agit d'un excellent mécanisme permettant d'afficher des informations arbitraires dans l'affichage de la liste pour un modèle. Cependant, il ne semble pas y avoir un mécanisme similaire pour la page de changement de changement elle-même. Quel est le moyen le plus simple d'accomplir cette faible fonctionnalité utile pour afficher des informations arbitraires et non dérivées sur le terrain sur la page de formulaire de modification MODERADMIN?

Un exemple concret de la configuration souhaitée: xxx


0 commentaires

3 Réponses :


1
votes

Je l'ai déjà fait avant de remplacer le modèle du formulaire de modification et d'accéder à des méthodes personnalisées sur le modèle. Utilisation des champs demande à l'administrateur d'essayer d'ajouter un champ de formulaire pour votre méthode.


1 commentaires

Les modèles d'administration m'ont rempli de peur et de tremblement, mais je pourrais avoir à considérer cela.



26
votes

Ajoutez également la méthode du tuple "Readonly_fields".


2 commentaires

Je souhaite! Readonly_fields est nouveau à Django 1.2, et je suis bloqué avec 1.1 pour l'instant.


Vous n'avez pas de chance alors, j'ai peur - il n'y a aucun moyen de le faire en 1.1 sans piratage sévère.



5
votes

Essayez ce qui suit:

class CustomUserAdminForm(forms.ModelForm):
    registration_key = forms.IntegerField()                                 

    class Meta: 
        model = User   

class CustomUserAdmin(UserAdmin):
    def registration_key(self, obj):
        """Special method for looking up and returning the user's registration key
        """
        return 'the_key'

    list_display = ('email', 'first_name', 'last_name', 'is_active', 'is_staff', 
                    'registration_key')  # <- this works

    fields = ('email', 'first_name', 'last_name', 'is_active', 'is_staff',
              'registration_key')


1 commentaires

Intéressant. Heureusement, j'ai pu rejeter mes chaînes de 1.1 depuis que posez cette question, mais vous avez confirmé ces travaux dans 1.1?