התאמה אישית של אתר הניהול
חלק מהיחידה מודלים וממשק הניהול במסלול ה-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
לחץ על Run, התחבר שוב וחפש את herbert.
נסו בעצמכם
from django.contrib import admin
from .models import Author, Book, Tag
admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מודלים וממשק הניהול
תרגלו בעצמכם: Django אונליין