התאמה אישית של אתר הניהול
חלק מהיחידה מודלים וממשק הניהול במסלול ה-Django של Coddy. שיעור 21 מתוך 23.
ברשימת הספרים בממשק הניהול מופיעה עמודה אחת, שמציגה את __str__ של כל ספר, ואין דרך למצוא דבר. מחלקה ModelAdmin, שנרשמת באמצעות הדקורטור, משנה זאת. עבור Loan עם מפתח זר book:
@admin.register(Loan)
class LoanAdmin(admin.ModelAdmin):
list_display = ["book", "friend", "lent_on", "returned"]
search_fields = ["friend", "book__title"]
list_filter = ["returned", "lent_on"]list_display בוחר את העמודות; עמודת מפתח זר מציגה את __str__ של השורה הקשורה, ושדה רבים-לרבים לא יכול להיות עמודה. search_fields מוסיף תיבת חיפוש. כדי לחפש דרך מפתח זר, יש לציין שדה של המודל האחר אחרי שני קווים תחתונים, book__title: book לבדו הוא קישור, לא טקסט, והוא גורם לקריסת החיפוש. list_filter מוסיף סרגל צדדי של מסננים.
הדקורטור עושה אותו דבר כמו admin.site.register(Loan, LoanAdmin). יש לרשום כל מודל פעם אחת: רישום בפעם השנייה עוצר את האתר עם AlreadyRegistered.
אתגר
קלב־books/admin.py, הקצה ל־Book את BookAdmin במקום לרשום אותו באופן רגיל. רשימת הספרים צריכה לכלול:
- עמודות עבור
title,author,year,genreו־is_read - תיבת חיפוש שמאתרת ספרים לפי הכותרת או לפי שם המחבר
- סרגל צד שמסנן לפי
genreו־is_read
הפעל שוב את createsuperuser, התחבר וחפש ב־Books את herbert: Children of Dune ו־Dune.
נסו בעצמכם
from django.contrib import admin
from .models import Author, Book, Tag
admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מודלים וממשק הניהול
תרגלו בעצמכם: Django אונליין