Menu
CoddyTech

לפתק יש בעלים

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

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

כדי לקשר למשתמש, אל תייבא את User. הצבע על ההגדרה settings.AUTH_USER_MODEL באמצעות ForeignKey (אחרי 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

אתגר

בינוני
  • ל־Note נוסף שדה owner שמקשר למשתמש. מחיקת משתמש מוחקת את ההערות שלו, ו־user.notes.all() מציג את ההערות של המשתמש.
  • הערה חדשה שייכת למשתמש המחובר שכתב אותה. הטופס שומר רק את title ואת body.

לחצו על Run, התחברו בתור ada (סיסמה coddy-pass-123), כתבו הערה ופתחו את הכרטיסייה נתונים.

נסו בעצמכם

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 אונליין