Seite 1 von 1

[django] SubAdmin Seite gestalten

Verfasst: Donnerstag 28. Januar 2010, 15:43
von Sync32
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...

Verfasst: Samstag 30. Januar 2010, 09:56
von sma
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

Verfasst: Montag 1. Februar 2010, 08:32
von Sync32
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

Verfasst: Dienstag 2. Februar 2010, 15:25
von Sync32
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.

Verfasst: Dienstag 2. Februar 2010, 18:31
von /me
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).

Verfasst: Mittwoch 3. Februar 2010, 09:19
von Sync32
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/'

Verfasst: Mittwoch 3. Februar 2010, 10:58
von Sync32
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?