Domanda

Ciao a tutti e grazie per la lettura.

Ho un problema semplice che voglio sbarazzarsi di e non ho visto esempi in cui questo è stato ancora raggiunto, anche se la ricerca intorno alla rete per un bel po '.

I recentemente ampliato con ProfiloUtente quindi il mio admin.py assomiglia a questo:

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)

e models.py in questo modo:

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

Fondamentalmente quello che voglio ottenere è quello di sbarazzarsi del # 1 StackedInLine che mostra in Admin. La ragione per cui io uso StackedInLine invece di TabularInLine è perché altrimenti ho un "Delete?" colonna a destra e trovo optional così vorrei né escludere tale o sbarazzarsi della numerazione # 1 in StackedInLine.

Questo è ciò che sembra nel "mondo reale" .. (contrassegnati con colore rosso)

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

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

2

Anche. Mi chiedo perché non posso usare fieldsets quando ho caricato il file di models.py ProfiloUtente in admin.py. Si dice semplicemente il campo non esiste. Devo chiamare i campi in modo diverso rispetto a Django / contrib / auth / admin.py dove ho visto funziona?

Se ti senti come c'è un modo più efficiente di fare questo dimmi solo. Sono aperto a tutte le risposte.

È stato utile?

Soluzione

1

Credo che stai ricevendo troppo esigente qui. Se è assolutamente necessario controllo su tali dettagli minuti si dovrebbe creare le proprie opinioni invece di usare l'amministratore. In caso contrario, accatastati è ciò che si vuole, perché tabellare non ha molto senso per le relazioni one-to-one.

2

Sono stato in grado di utilizzare fieldsets nei profili utente. L'unica differenza tra il mio codice e la tua sembra essere che sto usando tuple di invece di dict di. Ecco il mio per il confronto:

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']

Modifica :

Ho appena fatto un rapido controllo e la "# 1" è venuta dal modello di amministrazione.

Questo significa che è possibile rimuovere facilmente l'override del modello stock di amministrazione, anche se questo avrà effetto su tutti i tuoi inline tra cui quelli che sono uno-a-molti.

Il modello in linea impilati può essere trovato in django/contrib/admin/templates/admin/edit_inline/stacked.html

Questo significa che è possibile copiare il modello per la propria cartella templates come templates/admin/edit_inline/stacked.html e questo verrà caricato da Django in fase di esecuzione al posto del modello stock.

Dopo aver copiato modificare la copia locale per rimuovere #{{ forloop.counter }} sulla linea 9.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top