לדלג לתוכן

פייתון/פיתוח לסביבת אינטרנט/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. הם מאפשרים לנו לאחסן נתונים במסד נתונים ולהציג אותם למשתמש. בנוסף ליסודות שהוזכרו לעיל, קיימים מספר הרחבות שניתן להשתמש בהן כדי להפוך את המודלים שלנו ליעילים ורב-תכליתיים יותר.