Pregunta

Hola a todos y gracias por leer.

Tengo un problema simple que quiero para deshacerse de y no he visto ejemplos donde esto se consigue sin embargo a pesar de la búsqueda alrededor de la red durante bastante tiempo.

Hace poco extendida con PerfilUsuario así que mis miradas admin.py como esto:

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)

y models.py como esto:

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

Básicamente lo que quiero lograr es deshacerse de la StackedInLine # 1 que muestra en la parte administrativa. La razón que el uso StackedInLine en lugar de TabularInLine es porque de lo contrario me sale un "Delete?" columna a la derecho y me resulta opcional por lo que le gustaría excluir cualquiera que o deshacerse de la # 1 en StackedInLine numeración.

Esto es lo que parece en el "mundo real" .. (marcado con rojo)

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

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

2

También. Me pregunto por qué no puedo usar fieldsets cuando he cargado el archivo models.py PerfilUsuario en admin.py. Simplemente dice el campo no existe. ¿Tengo que llamar a los campos de forma diferente que en django / contrib / auth / admin.py donde he visto el trabajo?

Si usted siente que hay una manera más eficiente de hacerlo sólo dime. Estoy abierto a todas las respuestas.

¿Fue útil?

Solución

1

creo que está recibiendo demasiado exigente aquí. Si es absolutamente necesario el control sobre tales detalles minuciosos que debe crear sus propios puntos de vista en lugar de utilizar el administrador. De lo contrario apilado es lo que quiere porque tabular no tiene mucho sentido para las relaciones uno-a-uno.

2

he sido capaz de utilizar conjuntos de campos en los perfiles de usuario. La única diferencia entre el código y el suyo parece ser que estoy usando es tupla en lugar de dict de. Esta es la mía para la comparación:

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

Editar

Acabo de hacer una comprobación rápida y el "# 1" proviene de la plantilla de administración.

Esto significa que puede eliminar fácilmente sobreescribiendo la plantilla de la administración, aunque esto afectará a todos sus inlines incluyendo los que son uno-a-muchos.

La plantilla de línea apilados se puede encontrar en django/contrib/admin/templates/admin/edit_inline/stacked.html

Esto significa que puede copiar la plantilla a su propio directorio de plantillas como templates/admin/edit_inline/stacked.html y esto va a ser cargado por Django en tiempo de ejecución en lugar de la plantilla stock.

Después de copiar editar su copia local para quitar #{{ forloop.counter }} en la línea 9.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top