Formularfeldbeschreibung in django admin

75

Wie füge ich einen Hinweis für das Formularfeld in django admin hinzu, wie im nächsten Beispiel?

Formularfeldbeschreibung in django admin

(hier: URL- und Inhaltsbeschreibungen werden mit grauer Farbe unter dem Feld angezeigt)

Megido
quelle

Antworten:

129

Beim Definieren Ihrer Felder in models.py:

myfield = models.CharField(max_length=100, help_text="This is the grey text")

Speicher diesen Link als Lesezeichen:

https://docs.djangoproject.com/de/dev/ref/models/fields/#help-text

Ich beziehe mich ständig darauf (nicht nur für help_text, sondern für alles, was mit Modellfeldern zu tun hat)!

Timmy O'Mahony
quelle
2
Ich denke, Sie haben den falschen Link, da wir models.FooFieldeher über als sprechen forms.FooField. Es sollte docs.djangoproject.com/de/dev/ref/models/fields/#help-text
Mechanische Schnecke
3
und was ist mit dem Hinzufügen eines mehrzeiligen Feldes wie Beschreibung?
Pranavk
1
@ Pranavk es ist HTML, so dass Sie <br/>für Zeilenumbrüche verwenden können
RickyA
23

Zusätzlich zu Timmys Antwort können Sie, wenn Sie zusätzlichen Hilfetext anzeigen und auch ein hilfreiches Markup haben möchten, einzelne Formularfeldsätze benutzerdefiniert anzeigen und ein Beschreibungsfeld hinzufügen . Angenommen, Sie möchten das Feld " Inhalt" in einen eigenen Feldsatzblock aufteilen und einen ausführlichen Hilfetext hinzufügen. Sie können so etwas tun wie:

from mymodel.models import MyModel
from django.contrib import admin

"""
Custom Help Text
"""
CONTENT_HELP_TEXT = ' '.join(['<p>Here is some multi-line help',
                              'which is a long string so put',
                              'into a list which is then joined',
                              'with spaces. I can do fun things',
                              'like have <strong>bold</strong>',
                              'and some line breaks.<br/>'])
"""
Customize Admin
"""
class MyModelAdmin(admin.ModelAdmin):
    """
    Add your other customizations
    like actions, list_display, list filter, etc
    """
    fieldsets = [
        ('Content', {
            'fields':('content',),
            'description': '<div class="help">%s</div>' % CONTENT_HELP_TEXT,
        }),
    ]

admin.site.register(MyModel, MyModelAdmin)

Weitere Informationen finden Sie im Bereich Django-Dokumente (scrollen Sie nach unten zu den Feldsätzen).

tatlar
quelle
Es sollte ein Komma nach 'Inhalt' in Klammern stehen
thevasya
Die akzeptierte Antwort ist der Standard für Formulare. Dies ist jedoch die beste Antwort, da sie unabhängig von den Formularen ist und sich auf die vom Modelladministrator festgelegte Aufschlüsselung der Feldsätze stützt. Vielen Dank!
Radtek
Sie müssen Zeichenfolgenlisten nicht mit Leerzeichen verknüpfen.
ccpizza
2
@ diegueus9: Ihre Bearbeitung meiner Antwort hat einen grammatikalischen Fehler verursacht: Sie haben den Leerraum zwischen den Wörtern pro neuer Zeile entfernt, der den Satz verstümmelt. Bitte korrigieren oder rollen Sie zum Original zurück.
Tatlar
1
@ diegueus9: Ich habe auf eine frühere Version der Antwort zurückgesetzt. Bitte überprüfen Sie Ihre vorgeschlagenen Änderungen auf Syntax, bevor Sie sie wieder herstellen.
Tatlar