Verwenden Sie, wie der Titel schon sagt, die Administrationsseite. Was ich hier experimentieren möchte, ist
** Termine nach Datum filtern **
** Folgen Sie der Beziehung in umgekehrter Reihenfolge **
ist. Ich hatte das Gefühl, dass alle [Tutorial] waren (http://docs.djangoproject.jp/en/latest/intro/tutorial01.html), also habe ich es nach der Überprüfung versucht.
Es ist jede admin.py, mit der man spielen kann. Schauen wir sie uns der Reihe nach an.
schedule/admin.py
from django.contrib import admin
from schedule.models import WorkTime,MonthShift,StaffSchedule,NgShift,GuestSchedule
#### base classes ####
class DateAdmin(admin.ModelAdmin):
def schedule_date(self,obj): #obj enthält ein Modellobjekt
return obj.strfdate() #Gibt zurück, was Sie auf der Änderungslistenseite sehen möchten
date_hierarchy = 'date' #Stellen Sie die Filterfunktion für Datumsobjekte ein
class TimeTableAdmin(admin.ModelAdmin):
def time_table(self,obj):
return obj.strftimetable()
#### main classes ####
###### staff ######
class MonthShiftAdmin(admin.ModelAdmin):
list_display = ('year','month','groupschedule','completed',) #Artikelliste oder Taple, die auf der Seite mit der Änderungsliste angezeigt werden sollen.
list_filter = ('groupschedule',) #Fügt eine Filterfunktion für bestimmte Elemente hinzu
admin.site.register(MonthShift,MonthShiftAdmin) #Bewerben Sie sich, indem Sie das Modell für admin in das zweite Argument einfügen
class WorkTimeAdmin(TimeTableAdmin):
list_display = ('title','time_table',) # time_Tabelle ist eine Funktion des übergeordneten Elements
list_filter = ('groupschedule',)
admin.site.register(WorkTime,WorkTimeAdmin)
class StaffScheduleAdmin(DateAdmin):
list_display = ('schedule_date','staff','worktime',) # schedule_Datum ist eine Funktion des übergeordneten Elements
list_filter = ('staff__groupschedule','date','staff',) #Sie können der umgekehrten Beziehung mit zwei Unterstrichen folgen
admin.site.register(StaffSchedule,StaffScheduleAdmin)
class NgShiftAdmin(DateAdmin):
list_display = ('staff','schedule_date','get_values')
def get_values(self,obj):
return obj.ng_values()
list_filter = ['date','staff',]
admin.site.register(NgShift,NgShiftAdmin)
###### guest ######
class GuestScheduleAdmin(DateAdmin,TimeTableAdmin):
list_display = ('schedule_date','guest','time_table',)
list_filter = ['date','guest',]
admin.site.register(GuestSchedule,GuestScheduleAdmin)
Es definiert eine übergeordnete Klasse zum Speichern von Code. Experimentieren Sie, um Elemente mit list_filter einzugrenzen. Ich könnte sie nach Datum getrennt sehen, daher wäre es schön, beim Erstellen einer Schichttabelle etwas Ähnliches zu tun.
staff/admin.py
from django.contrib import admin
from staff.models import Staff
class StaffAdmin(admin.ModelAdmin):
list_display = ('name','ng_list',)
list_filter = ('groupschedule',)
def ng_list(self,obj):
ngs = ""
for ng in obj.ngshift_set.all():
ngs += "%s(%s) ," % ( ng.date,ng.ng_values(), )
return ngs
admin.site.register(Staff,StaffAdmin)
Die umgekehrte Beziehung zu xxxx_set war ebenfalls erfolgreich.
guest/admin.py
from django.contrib import admin
from guest.models import Guest
class GuestAdmin(admin.ModelAdmin):
list_display = ('name','get_schedules',)
list_filter = ('groupschedule',)
def get_schedules(self,obj):
schedules = ""
for schedule in obj.guestschedule_set.all():
schedules += "%s(%s) ," % ( schedule.date,schedule.strftimetable(), )
return schedules
get_schedules.short_description = 'Schedules'
admin.site.register(Guest,GuestAdmin)
Es unterscheidet sich nicht wesentlich von staff / admin.py.
owner/admin.py
from django.contrib import admin
from owner.models import GroupSchedule
class GroupScheduleAdmin(admin.ModelAdmin):
list_display = ('group','owner',)
admin.site.register(GroupSchedule,GroupScheduleAdmin)
Es wird nervig, also habe ich es gestern nicht hinzugefügt. Ich werde am Ende nicht den Admin-Bildschirm verwenden, also ist das in Ordnung.
Recommended Posts