לפתק יש בעלים
חלק מהיחידה משתמשים וחשבונות במסלול ה-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 עבור השדה החדש.
אתגר
בינוניהקצה בעלים לכל פתק.
- בקובץ
notes/models.py, הוסף שדהownerל־Note: מפתח זר אלsettings.AUTH_USER_MODELעםon_delete=models.CASCADEו־related_name="notes". ייבא אתsettingsמ־django.conf. - ב־
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 אונליין