פייתון/פיתוח לסביבת אינטרנט/Django/מדריך ג'נגו חלק 3: שימוש במודלים
מודלים ב-Django
[עריכה]מודלים ב-Django הם מבני נתונים שמייצגים את הנתונים של האפליקציה שלנו. הם מבוססים על מודל ה-ORM של Django, המאפשר לנו ליצור קשרים בין מודלים שונים, לבצע שאילתות מורכבות במסד הנתונים, ולנהל את הנתונים שלנו בצורה יעילה.
להכריז על מודל
[עריכה]מודלים מוכרזים ב-Django באמצעות המילה המוגדרת class
. שם המודל חייב להיות שם קל לזכור, והוא צריך להיות ייחודי בתוך האפליקציה שלך.
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.CharField(max_length=255)
pub_date = models.DateField()
מודל זה מכיל שלושה שדות:
title
: שדה טקסט בעל אורך מקסימלי של 255 תווים.author
: שדה טקסט בעל אורך מקסימלי של 255 תווים.pub_date
: שדה תאריך.
סוגי שדות
Django מספק מגוון רחב של סוגי שדות שונים שתוכלו להשתמש בהם במודלים שלכם. להלן כמה מהסוגי השדות העיקריים:
CharField
: שדה טקסט בעל אורך מקסימלי מוגבל.TextField
: שדה טקסט בעל אורך בלתי מוגבל.IntegerField
: שדה מספר שלם.FloatField
: שדה מספר עשרוני.DateField
: שדה תאריך.TimeField
: שדה זמן.DateTimeField
: שדה תאריך וזמן.BooleanField
: שדה בוליאני.FileField
: שדה קובץ.
גישה לנתוני מודל
[עריכה]ניתן לגשת לנתוני מודל באמצעות אובייקט Model
. אובייקט Model
מייצג רשומה אחת במסד הנתונים.
לדוגמה, הנה כיצד לקבל את הרשימה של כל הספרים במודל:
books = Book.objects.all()
זה יחזיר אובייקט QuerySet
המכיל את כל הרשמות הספרים במסד הנתונים.
ניתן גם לגשת לנתוני מודל בודד באמצעות אובייקט Model
. לדוגמה, הנה כיצד לקבל את הספר עם הכותרת "ההוביט":
Python
book = Book.objects.get(title="ההוביט")
זה יחזיר אובייקט Model
המכיל את הרשומה עבור הספר "ההוביט".
הרחבות
[עריכה]בנוסף ליסודות שהוזכרו לעיל, קיימים מספר הרחבות שניתן להשתמש בהן במודלים של Django. להלן כמה מההרחבות העיקריות:
- ForeignKey: שדה יחס זר המאפשר לנו ליצור קשרים בין מודלים שונים.
- ManyToManyField: שדה יחס רב-אל-רב המאפשר לנו ליצור קשרים בין שני מודלים או יותר.
- AbstractModel: מודל מופשט המאפשר לנו ליצור תכונות משותפות למספר מודלים ספציפיים.
- MetaClass: מחלקה מופשטת המאפשרת לנו להגדיר מאפיינים כלליים עבור מודל.
סיכום
[עריכה]מודלים הם כלי חשוב ב-Django. הם מאפשרים לנו לאחסן נתונים במסד נתונים ולהציג אותם למשתמש. בנוסף ליסודות שהוזכרו לעיל, קיימים מספר הרחבות שניתן להשתמש בהן כדי להפוך את המודלים שלנו ליעילים ורב-תכליתיים יותר.