Frage

Hallo an alle und vielen Dank für das Lesen.

Ich habe ein einfaches Problem, dass ich will, um loszuwerden, und ich habe nicht gesehen, obwohl der Suche Beispiele, wo dies noch um erreicht das Netz für eine ganze Weile.

ich mit meinem Userprofile so admin.py sieht wie folgt vor kurzem erweitert:

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)

und models.py wie folgt aus:

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

Im Grunde, was ich will erreichen, ist das # 1 StackedInLine loswerden Das zeigt, in dem Admin. Der Grund, warum ich den Einsatz StackedInLine statt TabularInLine ist, weil sonst ich eine bekommen „Delete?“ Spalte auf den Recht und ich finde es optional so würde Ich mag entweder ausschließen, dass oder loszuwerden, die Nummerierung # 1 in StackedInLine.

Dies ist, wie es in der „realen Welt“ sieht .. (markiert mit rot)

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

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

2

Auch. Ich frage mich, warum ich nicht Fieldset verwenden, wenn ich geladen habe die Userprofile models.py Datei in admin.py. Er sagt einfach das Feld nicht vorhanden ist. Muss ich, um die Felder nennen anders als in django / contrib / auth / admin.py, wo ich es gesehen habe Arbeit?

Wenn Sie glauben, dass es eine effizientere Art und Weise, dies zu tun mir nur sagen. Ich bin offen für alle Antworten.

War es hilfreich?

Lösung

1

Ich glaube, du bist immer zu pingelig hier. Wenn Sie unbedingt eine solche Minute braucht Details Steuerung über sollten Sie Ihre eigenen Ansichten erstellen, anstatt den Admin verwenden. Ansonsten gestapelt ist, was Sie wollen, weil tabellarisch für eine Eins-zu-Eins-Beziehungen nicht viel Sinn machen.

2

Ich habe in der Lage Fieldset in Benutzerprofilen zu verwenden. Der einzige Unterschied zwischen meinem Code und Ihr scheint zu sein, dass ich Tupel bin mit ist statt dict ist. Hier ist meins zum Vergleich:

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

Bearbeiten :

Ich habe gerade eine schnelle Überprüfung und das Zeichen „# 1“ aus der Admin-Vorlage kommt.

Das heißt, Sie leicht durch Überschreiben der Lager Admin-Vorlage entfernen können, obwohl dies alle Ihre inlines darunter auch solche betreffen, die eine Eins-zu-viele sind.

Die gestapelte Inline-Vorlage kann in django/contrib/admin/templates/admin/edit_inline/stacked.html gefunden werden

Diese Mittel können Sie die Vorlage an Ihre eigenen Vorlagen Verzeichnis wie templates/admin/edit_inline/stacked.html kopieren, und dies wird von Django zur Laufzeit statt der Lager Vorlage geladen werden.

Nach dem Kopieren bearbeitet Ihre lokale Kopie zu entfernen #{{ forloop.counter }} auf Linie 9.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top