Dieses Mal werden wir das Administrationsformular anpassen.
Lassen Sie uns das aktuelle Administrationsformular überprüfen.
polls/admin.py
from django.contrib import admin
# Register your models here.
from .models import Question
admin.site.register(Question)
Wenn Sie auf "http://127.0.0.1:8000/admin/polls/question/5/change/" zugreifen, wird die folgende Meldung angezeigt.
Ändern Sie admin.py, um das Administrationsformular anzupassen. Erstellen Sie eine QuestionAdmin-Klasse und ändern Sie die Anzeigereihenfolge von question_text und pub_date. Ursprünglich war es pub_date unter question_text, aber im folgenden Code ist es question_text unter pub_date.
polls/admin.py
from django.contrib import admin
# Register your models here.
from .models import Question
class QuestionAdmin(admin.ModelAdmin):
fields = ['question_text', 'pub_date']
admin.site.register(Question, QuestionAdmin)
polls/admin.py
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date']}),
]
Ich konnte bestätigen, dass die Frage angezeigt wird. Ist es jedoch nicht möglich, die mit der Frage verknüpfte Auswahl gleichzeitig anzuzeigen? Wir werden mit dem Tutorial fortfahren.
polls/admin.py
from django.contrib import admin
from .models import Question, Choice
admin.site.register(Choice)
Auswahl wurde hinzugefügt. Fragen im Zusammenhang mit der Option "Der Himmel" können nicht bestätigt werden, ohne die Option zu öffnen. Sie können sehen, dass die Option "Der Himmel" mit der Frage "Was ist das?" Verknüpft ist.
Zeigt gleichzeitig Fragen und Auswahlmöglichkeiten an. ChoiceInline gibt an, dass drei leere Auswahlfelder angezeigt werden sollen.
polls/admin.py
from django.contrib import admin
# Register your models here.
from .models import Question, Choice
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
Die Frage "Was ist das?" Hat die Auswahlmöglichkeiten "Nicht viel" und "Der Himmel" mit drei leeren Auswahlfeldern. 。
Da die Auswahlanzeige vertikal lang ist, ändern wir sie so, dass sie im Tabellenformat angezeigt wird.
polls/admin.py
class ChoiceInline(admin.TabularInline):
Es wird in einem Tabellenformat angezeigt und ist ordentlich.
Die Änderungsliste ist der Inhalt, der unter "http://127.0.0.1:8000/admin/
polls/admin.py
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
list_display = ('question_text', 'pub_date', 'was_published_recently')
Öffnen Sie "http://127.0.0.1:8000/admin/polls/question/". Bisher war nur die Spalte "QUESTION TEXT" verfügbar, es wurden jedoch neue Spalten "DATA PUBLISHED" und "PUBLISHED RECENTLY?" Hinzugefügt.
Die Spalten "QUESTION TEXT" und "DATA PUBLISHED" unterstützen die Sortierung. Andererseits unterstützt die Spalte "ZULETZT VERÖFFENTLICHT?" Die Sortierung nicht, da sie den Rückgabewert der Methode anzeigt.
Verwenden wir den Filter, um ihn auf "ZULETZT VERÖFFENTLICHT?" Eingrenzen zu können.
polls/models.py
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('data published')
def __str__(self):
return self.question_text
def was_published_recently(self):
return timezone.now() - datetime.timedelta(days=1) <= self.pub_date <= timezone.now()
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'
Füge list_filter hinzu.
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
list_display = ('question_text', 'pub_date', 'was_published_recently')
list_filter = ['pub_date']
Der Filter wird in der Seitenleiste angezeigt. Sie können nach "Alle Zeiträume (" Beliebiges Datum ")" "Heute (" Heute ")" "Diese Woche (" Letzte 7 Tage ")" "Dieser Monat (" Dieser Monat ")" "Dieses Jahr (" Dieses Jahr ")" eingrenzen. Ich werde.
Erstellen Sie als Nächstes ein Suchfenster.
polls/admin.py
search_fields = ['question_text']
Oben auf dem Bildschirm wurde ein Suchfenster angezeigt.
Das ist das Ende. Vielen Dank.
Recommended Posts