Menu
CoddyTech

לפתק יש בעלים

חלק מהיחידה משתמשים וחשבונות במסלול ה-Django של Coddy. שיעור 8 מתוך 16.

כל המשתמשים המחוברים חולקים ערמת פתקים אחת. כדי להבדיל ביניהם, כל פתק צריך לתעד מי כתב אותו: ForeignKey, כמו זה שמקשר בין ספר למחבר שלו.

כדי לקשר למשתמש, אל תייבא את User. הפנה את ForeignKey להגדרה settings.AUTH_USER_MODEL (אחרי from django.conf import settings), שמציינת את מודל המשתמש, שהוא כאן "auth.User". כך הקוד נשאר מתאים גם לפרויקט עם מודל משתמש משלו.

מי כתב פתק לעולם אינו שדה בטופס: משתמש שהיה יכול לבחור את הערך שלו היה יכול לכתוב בשם מישהו אחר. התצוגה ממלאת אותו. כמו ביחידה של הטפסים, form.save(commit=False) יוצר את האובייקט בלי לשמור אותו, כך שהתצוגה יכולה להגדיר שדה שאין בטופס:

order = form.save(commit=False)
order.total = order.quantity * order.unit_price
order.save()

הרץ את makemigrations ואת migrate עבור השדה החדש.

challenge icon

אתגר

בינוני

הקצה בעלים לכל פתק.

  1. בקובץ notes/models.py, הוסף שדה owner ל־Note: מפתח זר אל settings.AUTH_USER_MODEL עם on_delete=models.CASCADE ו־related_name="notes". ייבא את settings מ־django.conf.
  2. ב־note_create (views.py), החלף את note = form.save(). צור את הפתק בלי לשמור אותו, הגדר את המשתמש המחובר כבעלים שלו, ואז שמור אותו.

כתוב פתק בתור ada, ואז פתח את הכרטיסייה נתונים: הבעלים שלו הוא 1.

נסו בעצמכם

from django.db import models


class Note(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField(blank=True)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ["-created"]

    def __str__(self):
        return self.title

כל השיעורים ביחידה משתמשים וחשבונות

תרגלו בעצמכם: Django אונליין