لكل ملاحظة مالك
جزء من قسم المستخدمون والحسابات في رحلة 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 لإضافة الحقل الجديد.
التحدي
متوسط- يحصل
Noteعلى حقلownerيربطه بمستخدم. يؤدي حذف مستخدم إلى حذف ملاحظاته، وتعرضuser.notes.all()ملاحظات المستخدم. - تنتمي الملاحظة الجديدة إلى المستخدم المسجّل الدخول الذي كتبها. يحتفظ النموذج بحقلَي
titleوbodyفقط.
اضغط على Run، وسجّل الدخول باسم ada (كلمة المرور coddy-pass-123)، واكتب ملاحظة، ثم افتح علامة التبويب Data.
جرّب بنفسك
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
جميع دروس المستخدمون والحسابات
تدرّب بنفسك: Playground لـ Django