Question

Bonjour à tous et merci pour la lecture.

J'ai un problème simple que je veux me débarrasser et je ne l'ai pas vu exemples où est encore atteint ce même si la recherche sur le net pendant un certain temps.

J'ai récemment étendu avec UserProfile donc mon admin.py ressemble à ceci:

from django.contrib import admin
from django.contrib.auth.models import User
from models import UserProfile
from django.contrib.auth.admin import UserAdmin

admin.site.unregister(User)

class UserProfileInline(admin.StackedInline):
                model = UserProfile

class UserProfileAdmin(UserAdmin):
#               fieldsets = [
#                       (None,  {'fields': ['image']}),
#                       ('Avatar', {'fields': ['text'], 'classes': ['collapse']}),
#               ]
                inlines = (UserProfileInline,)

admin.site.register(User, UserProfileAdmin)

et models.py comme ceci:

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
        # Required
        user = models.ForeignKey(User, unique=True)
        image = models.ImageField(upload_to='media/users/', blank=True, help_text="Your face")
        text = models.TextField(blank=True, help_text="Write something about yourself")

In an app called users that is referred to by settings.py with:

    AUTH_PROFILE_MODULE = users.UserProfile

1

En fait ce que je veux atteindre est de se débarrasser de la # 1 StackedInLine qui montre dans l'admin. La raison pour laquelle je l'utilise au lieu de StackedInLine TabularInLine est parce que sinon je reçois un « Supprimer? » à la colonne à droite et je trouve en option donc je voudrais soit exclure ou se débarrasser de la # 1 dans la numérotation StackedInLine.

Voici à quoi il ressemble dans « le monde réel » .. (Marqué avec rouge)

Stacked: hxxp: //i28.tinypic.com/2lsadkg.jpg

tabulaires: hxxp: //i27.tinypic.com/4lybs.jpg

2

De plus. Je me demande pourquoi je ne peux pas utiliser fieldsets quand je charge la UserProfile fichier models.py dans admin.py. Il dit simplement le champ n'existe pas. Est-ce que je dois appeler les champs différemment que dans django / contrib / auth / admin.py où je l'ai vu travailler?

Si vous vous sentez comme il y a un moyen plus efficace de le faire juste me dire. Je suis ouvert à toutes les réponses.

Était-ce utile?

La solution

1

Je pense que vous obtenez trop pointilleux ici. Si vous avez absolument besoin de contrôle sur les détails de ces minutes, vous devez créer votre propre point de vue au lieu d'utiliser l'admin. Dans le cas contraire empilée est ce que vous voulez, car un tableau ne fait pas beaucoup de sens pour une des relations individuelles.

2

Je suis en mesure d'utiliser fieldsets dans les profils utilisateur. est la seule différence entre mon code et le vôtre semble être que j'utilise tuple de la place de dict. Voici la mienne pour la comparaison:

class UserProfileInline(admin.StackedInline):
    model = UserProfile

class MyUserAdmin(UserAdmin):
    inlines = [UserProfileInline]
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
        (_('Permissions'), {'fields': ('is_staff', 'is_active', 'is_superuser')}),
        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
        (_('Groups'), {'fields': ('groups',)}),
    )
    exclude = ['user_permissions']

EDIT :

Je viens de faire une vérification rapide et le « # 1 » vient du modèle d'administration.

Cela signifie que vous pouvez facilement l'enlever en remplaçant le modèle d'administration d'actions, bien que cela affectera tous vos inline, y compris ceux qui sont un à plusieurs.

Le modèle en ligne empilés se trouve dans django/contrib/admin/templates/admin/edit_inline/stacked.html

Cela signifie que vous pouvez copier le modèle à votre propre répertoire de modèles comme templates/admin/edit_inline/stacked.html et ce sera chargé par Django à l'exécution au lieu du modèle de stock.

Après la copie modifier votre copie locale pour supprimer #{{ forloop.counter }} sur la ligne 9.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top