القيم الافتراضية والحقول الفارغة
جزء من قسم النماذج ولوحة الإدارة في رحلة Django على Coddy. الدرس 3 من 23.
احفظ كتابًا دون أن تحدد ما إذا كنت قد قرأته، فترفض قاعدة البيانات ذلك: NOT NULL constraint failed. كل حقل مطلوب إلى أن تحدد خلاف ذلك، باستخدام أحد الخيارات الثلاثة:
has_subtitles = models.BooleanField(default=True)
rating = models.DecimalField(max_digits=3, decimal_places=1, null=True, blank=True)
tagline = models.CharField(max_length=200, blank=True)default هي القيمة التي يحصل عليها الصف الجديد عندما لا تعطي أي قيمة. تتيح null=True للعمود تخزين NULL، التي يقرأها Python على أنها None. وتتيح blank=True للنماذج ولوحة الإدارة قبول ترك الحقل فارغًا.
يحتاج الرقم أو التاريخ الذي قد لا تعرفه إلى كل من null=True وblank=True. أما النص فيحتاج إلى blank=True فقط: يُخزَّن النص الفارغ على هيئة ""، واستخدام null سيؤدي إلى وجود نوعين من الفراغ. TextField هو نص بلا حد أقصى للطول، ويُستخدم لشيء طويل مثل مراجعة.
التحدي
سهلاجعل الأجزاء الاختيارية من Book اختيارية:
- تبدأ
is_readبالقيمةFalse. - يمكن أن يكون
finishedفارغًا: فالكتاب غير المكتمل ليس له تاريخ. - أضف حقلًا
summaryللنصوص الطويلة بلا حد أقصى للطول؛ ويمكن تركه فارغًا، ليُخزَّن كنص فارغ، وليسNULL.
اضغط على Run، ثم اكتب في علامة التبويب Shell Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50"): سيطبع <Book: Book object (1)>، ولن يظهر خطأ.
جرّب بنفسك
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
year = models.IntegerField()
price = models.DecimalField(max_digits=6, decimal_places=2)
is_read = models.BooleanField()
finished = models.DateField()
جميع دروس النماذج ولوحة الإدارة
1نموذجك الأول
نموذجك الأولأنواع الحقول2الاستعلام باستخدام ORM
إنشاء الصفوفAll وGetالتصفية وعمليات البحثعدّ الصفوفترتيب الصفوفالتحديث والحذفتدرّب بنفسك: Playground لـ Django