Pergunta

Olá a todos e obrigado pela leitura.

Tenho um problema simples do qual quero me livrar e ainda não vi exemplos onde isso é alcançado, apesar de pesquisar na rede por um bom tempo.

Recentemente, estendi -me com o userprofile para que meu admin.py se pareça com o seguinte:

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 assim:

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

Basicamente, o que eu quero alcançar é me livrar da linha de estacas nº 1 que mostra no administrador. A razão pela qual eu uso o StackedInline em vez do tabularinline é porque, caso contrário, recebo um "excluir?" coluna para a direita e acho opcional, por isso gostaria de excluir isso ou me livrar da numeração nº 1 no StackedInline.

É assim que parece no "mundo real" .. (marcado com vermelho)

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

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

2

Também. Eu me pergunto por que não posso usar o Fieldsets quando carreguei o arquivo Models.py do UserProfile no admin.py. Simplesmente diz que o campo não existe. Eu tenho que chamar os campos de maneira diferente do que em django/contrib/auth/admin.py, onde vi isso funcionar?

Se você sente que há uma maneira mais eficiente de fazer isso, basta me dizer. Estou aberto para todas as respostas.

Foi útil?

Solução

1

Eu acho que você está ficando muito exigente aqui. Se você precisar absolutamente de controle sobre esses detalhes minuciosos, crie suas próprias visualizações em vez de usar o administrador. Caso contrário, empilhado é o que você deseja, porque o Tabular não faz muito sentido para as relações individuais.

2

Consegui usar o Fieldsets nos perfis de usuário. A única diferença entre meu código e seu parece ser que estou usando a de Tupla em vez de Dict's. Aqui está o meu para comparação:

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:

Acabei de fazer uma verificação rápida e o "#1" vem do modelo de administrador.

Isso significa que você pode removê-lo facilmente substituindo o modelo de administrador de estoque, embora isso afete todas as suas inlines, incluindo as que são um para muitos.

O modelo em linha empilhado pode ser encontrado em django/contrib/admin/templates/admin/edit_inline/stacked.html

Isso significa que você pode copiar o modelo para o seu próprio diretório de modelos como templates/admin/edit_inline/stacked.html E isso será carregado pelo Django no tempo de execução, em vez do modelo de estoque.

Depois de copiar, edite sua cópia local para remover #{{ forloop.counter }} na linha 9.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top