[django] SubAdmin Seite gestalten

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

Hallo.
Mit Hilfe eines Tutorials konnte eine inline box in eine AdminSeite einbinden.

Hab einfach unter admin.py
class GogoInline(admin.StackedInline):
model = ProjectGogo


class ProjectAdmin(admin.ModelAdmin):
inlines = [GogoInline]
geschrieben. Und schon hat er mir nun auf der Admin -> Gogo Seite diese Inline Box mit den ganzen Feldern eingebunden.
Bloß wie gestalte ich nun die InlineBox?



Bild

Wenn ich z.B. die Adminleiste (Save, Save and add etc...) nach ganz oben legen möchte.
Oder das ContentInputFeld etwas kleiner machen möchte...
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Um die Buttons zu verschieben, musst du die Templates anpassen. Dazu kopierst du dir am besten das passende Template in ein Verzeichnis "admin/..." in deinen "templates"-Order und überschreibst so das Original.

Die Breiten kannst du wahrscheinlich mit CSS allein ändern.

Oder du musst das AdminModel, welches für die entsprechende Formulardarstellung sorgt, anpassen. Es gibt dort eine Callback-Methode, in der du (relativ umständlich allerdings) noch mal das Widget bestimmen bzw. anpassen kannst, welches die Eingabefelder zeichnet und hier dann eine Version zur Verfügung stellen, die breiter oder bunter oder sonstwas ist.

Alternativ kannst du mit Hilfe von JQuery (oder einer anderen JS-Bibliothek) das UI clientseitig umschreiben. Diesen Weg würde ich wohl verfolgen (und JavaScript einfach voraussetzen, der das mutwillig abschaltet ist doof). Ein Template anzupassen, in das man dann sein JavaScript schreibt, wird einem jedoch wohl nicht erspart sein.

Stefan
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

Danke für die Antwort.
Oder du musst das AdminModel, welches für die entsprechende Formulardarstellung sorgt, anpassen.
Gibt's irgendwo eine Seite, wo dieses Thema behandelt wird? + paar Beispiele? So aus dem Kopf wüsste ich jetzt nicht wie ich per Module eine Formulardarstellung-Änderung mache.

Lg
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

Also habe nun den Ordner "media" gefunden, dort sind die Bilder und .css Dateien drinne.
Dort wird glaube ich auch der Style für die Forms definiert.

Aber natürlich will ich das allgemeine django Media Verzeichnis nicht überarbeiten oder so sondern für das Project ein eigenen Media Ordner anelgen.

Aber irgendwie bekomme ich dies nicht hin. Ich weiß nicht, wo ich "meinen" Mediaordner hinpacken muss, damit er den nimmt.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Sync32 hat geschrieben:Aber irgendwie bekomme ich dies nicht hin. Ich weiß nicht, wo ich "meinen" Mediaordner hinpacken muss, damit er den nimmt.
Schau mal in der settings.py nach ADMIN_MEDIA_PREFIX (oder so ähnlich).
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

Ja hab ich auch schon gesehen und mit den Pfaden rumgespielt habt aber irgendwie nicht geklappt.

Code: Alles auswählen

# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = ''

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = ''

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = '/media/'
Sync32
User
Beiträge: 141
Registriert: Mittwoch 27. Januar 2010, 12:42

Wobei das auch ne blöde Variante ist, die <textarea> über .css zu verkleinern, denn dann werden sie woanders im Django ja auch verkleinert.

Kann man nicht über die admin.py auch die Größe der Felder einstellen?

Oder allg. die Darstellung? Denn derzeit werden die Felder ja einfach nur untereinander wiedergegeben
Was ist, wenn ich möchte, dass das Feld/Texarea X neben dem Feld "name" stehen soll?
Antworten