ModelAdmin.list_display = ('hoge',)
Benutzerdefinierte Methoden für Modelle, die Bool zurückgeben, können direkt angegeben werden. Sie können auch "unicode" oder "str" angeben.
ModelAdmin.list_display = ('__str__', 'model_custom_method')
Standardmäßig hat die ganz links angezeigte einen Link
ModelAdmin.list_display = ('hoge', 'fuga')
ModelAdmin.list_display_links = ('fuga',)
ModelAdmin.list_display = ('custom_hoge',)
def custom_hoge(self, obj):
return u'Hoge'
custom_hoge.short_description = u'Anzeigename'
custom_hoge.allow_tags = True #HTML-Tag-Berechtigung
Für Benutzereingaben wird empfohlen, die Funktion "format_html (" hoge ")" zu verwenden.
ModelAdmin.ordering = ('created_at',) #Nach Erstellungszeit sortieren
ModelAdmin.actions = ['hoge'] #Definieren Sie definierte Funktionen usw.
ModelAdmin.actions_on_top = True #Wird oben auf der Seite angezeigt
ModelAdmin.actions_on_bottom = True #Wird unten auf der Seite angezeigt
Da die gesamte Django-Sortierung auf DB-Abfrageebene erfolgt, können Felder, die keine Spalten in der DB enthalten, nicht sortiert werden. Wenn ein benutzerdefiniertes Feld jedoch ein bestimmtes Feld ersetzt, können Sie es sortieren, indem Sie den Feldnamen angeben.
ModelAdmin.list_display = ('number_str',)
#Nummer ist eine Nummer(int)Zurückgeben
def number_str(self, obj):
return str(obj.number)
number_str.admin_order_field = 'number'
list_display
sortierbarStackOverflow Django admin: how to sort by one of the custom list_display fields that has no database field
Es gibt zwei Spezifikationsmethoden
fields
list_display
usw. können Sie nur das Feld Model oder ModelAdmin.form
angebenModelAdmin.fields = ('hoge', 'fuga') # hoge,Beim Aktualisieren wird nur das Fuga-Feld hinzugefügt und bearbeitet
ModelAdmin.fields = (('hoge', 'fuga'), 'piyo') # hoge,Fuga wird in derselben Zeile angezeigt
exclude
ModelAdmin.exclude = ('hoge',) #hoge kann nicht bearbeitet werden
#Inline-Modell definieren
class SomeForeignKeyModelInline(admin.TabularInline):
model = SomeForeignKeyModel
#Fügen Sie dem Verwaltungsbildschirm des Modells das Inline-Modell hinzu
class HogeAdmin(admin.ModelAdmin):
list_display = ('hoge', 'fuga')
inlines = [SomeForeignKeyModelInline]
ModelAdmin.fieldsets = (
( 'Name', {'Optionsname': ('Optionswert',)} ),
(None, {
'fields': ('hoge', 'fuga')
}),
)
Standardmäßig generiert "ModelForm" ein Formular für den Verwaltungsbildschirm. Sie können jedoch auch Ihr eigenes benutzerdefiniertes Formular angeben.
ModelAdmin.form = HogeForm
stackOverflow: django admin - add custom form fields that are not part of the model
Haken Sie mit der Methode get_form
ein
ModelAdmin.get_form(request, obj=None, **kwargs)
Die Originalvorlage des Verwaltungsbildschirms wird in "Contrib / Admin / Template / Admin" gespeichert. Fügen Sie zum Überschreiben "admin /" zu dem von "TEMPLATE_DIR" festgelegten Verzeichnis hinzu.
Fügen Sie das Verwaltungsziel, das Sie überschreiben möchten, im obigen Verzeichnis mit "app_name / modelname /" hinzu. Die Vorlage unter dem App-Namen wird auf alle Modelle unter der App angewendet. Die Vorlagen unter dem Modellnamen werden nur auf den Verwaltungsbildschirm dieses Modells angewendet. Alle Verzeichnisnamen sind in Kleinbuchstaben.
Grundsätzlich ist es effizienter, nur die notwendigen Teile zu überschreiben.
Beispiel: Wenn Sie den Bildschirm mit der Fuga-Modellliste der Hoge-App überschreiben möchten Erstellen Sie "admin / hoge / fuga / change_list.html".
Überschreiben Sie danach den {{% block%} `, den Sie ändern möchten, wie folgt.
{% extend 'admin/change_list.html' %}
{% block 'content' %}
<!--
Formulare und Variablen, die Sie hinzufügen möchten
-->
{{ block.super }}
{% endblock 'content' %}
Wenn Sie dem Verwaltungsbildschirm eine eigene Funktion hinzufügen möchten, ein Memo der möglicherweise erforderlichen Arbeit
Fügen Sie eine URL hinzu, die Ihre eigenen Funktionen bietet. Sie müssen die URL anpassen, die der Django-Administratorbildschirm standardmäßig generiert.
Verwenden Sie get_urls.
from django.conf.urls import url
from django.http import HttpResponse
class HogeAdmin(admin.ModelAdmin):
def get_urls(self):
urls = super(HogeAdmin, self).get_urls()
my_urls = [
url(r'^hoge/$', self.admin_site.admin_view(self.hoge), name='hoge'),
]
return my_urls + urls
def hoge(self, request):
return HttpResponse('OK')
self.admin_site.admin_view
gibt die Berechtigungsprüfung und never_cache
für die Ansicht, die Sie hinzufügen möchten.
Grundsätzlich ist es besser, es damit zu verpacken.
Beachten Sie die Reihenfolge von "return my_url + urls". Wenn Sie "my_urls" nicht an die erste Stelle setzen, wird die Standard-URL des Verwaltungsbildschirms priorisiert. Ich kann nicht zur Ansicht meiner eigenen definierten URL gelangen.
Überschreiben Sie das Verhalten jeder Ansichtsfunktion
class HogeAdmin(admin.ModelAdmin):
#Beispiel für das Überschreiben der Funktion des Listenbildschirms
def changelist_view(self, request, extra_context=None):
extra_context = extra_context or {}
extra_context['hoge'] = 'hoge'
return super(HogeAdmin, self).changelist_view(request, extra_context=extra_context)
StackOverflow Multiple ModelAdmins/views for same model in Django admin
Recommended Posts