Menu
CoddyTech

القيم الافتراضية والحقول الفارغة

جزء من قسم النماذج ولوحة الإدارة في رحلة 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 هو نص بلا حد أقصى للطول، ويُستخدم لشيء طويل مثل مراجعة.

challenge icon

التحدي

سهل

اجعل الأجزاء الاختيارية من 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()

جميع دروس النماذج ولوحة الإدارة

تدرّب بنفسك: Playground لـ Django