4 වන ඒකකය: Database Models නිර්මාණය

අපි දැන් අපේ "සටහන් යෙදුමේ" හදවත නිර්මාණය කරන්නයි යන්නේ. ඒ කියන්නේ, එක සටහනක (Note) මොන වගේ තොරතුරුද ගබඩා වෙන්න ඕන කියලා Django වලට කියන එක. මේකට තමයි අපි **Model** එකක් හදන්නේ.


Model එකක් කියන්නේ මොකක්ද?

හිතන්න, ඔයාට ජෙලි හදන්න ඕන කියලා. ඔයාට ජෙලි මිශ්‍රණය දාලා හඩගස්වගන්න **"අච්චුවක්" (Mold)** ඕන වෙනවා නේද? Django වල Model එකක් කියන්නෙත් අන්න ඒ වගේ අච්චුවක්. අපි Python කේතයෙන් මේ අච්චුව නිර්වචනය කරනවා. Django ඒ අච්චුව පාවිච්චි කරලා, database එකේ දත්ත ගබඩා කරන්න නියමිත ව්‍යුහය (table) හදනවා.

පියවර 1: `notes/models.py` ගොනුවේ `Note` Model එක සෑදීම

අපේ `notes` app එක ඇතුළේ තියෙන `models.py` file එක open කරගෙන, පහත කේතය ඒකට ඇතුළත් කරන්න.

from django.db import models
from django.contrib.auth.models import User

# අපේ සටහන් සඳහා 'අච්චුව' (Model)
class Note(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

කේතය තේරුම් ගනිමු:

  • `class Note(models.Model):`: අපි `Note` නමින් අලුත් model එකක් හදන බව Django වලට කියනවා.
  • `user = models.ForeignKey(User, ...)`: මේක තමයි වැදගත්ම කොටස. හැම සටහනක්ම අයිති කාටද කියලා හඳුනාගන්න, අපි ඒක `User` model එකට සම්බන්ධ කරනවා (link). `on_delete=models.CASCADE` කියන්නේ user කෙනෙක්ව delete කළොත්, එයාගේ සටහනුත් ඉබේම delete වෙන්න කියන එකයි.
  • `title = models.CharField(...)`: සටහනේ මාතෘකාව (කෙටි වාක්‍යයක්) සඳහා. `max_length=200` මගින් උපරිම අකුරු ගණන සීමා කරනවා.
  • `content = models.TextField()`: සටහනේ සම්පූර්ණ විස්තරය (දිගු වාක්‍ය) සඳහා.
  • `created_at = models.DateTimeField(...)`: සටහනක් සෑදූ වෙලාව ඉබේම සටහන් කරගන්න. `auto_now_add=True` නිසා අපිට මේක අතින් ඇතුළත් කරන්න අවශ්‍ය නෑ.

පියවර 2: Migrations - "අච්චුවෙන්" Database Table එක හැදීම

අපි දැන් Python කේතයෙන් අච්චුව හැදුවට, database එකේ තාම ඒකට අදාළ table එක හැදිලා නෑ. ඒ වැඩේ කරන්න පියවර දෙකක් තියෙනවා.

2a. `makemigrations` - උපදෙස් මාලාව සකස් කිරීම

මේ command එකෙන් වෙන්නේ, Django අපි හදපු model එක දිහා බලලා, database table එක හදන්න ඕන "උපදෙස් මාලාවක්" (migration file) හදන එකයි.

python manage.py makemigrations
2b. `migrate` - උපදෙස් ක්‍රියාත්මක කිරීම

දැන් අර හදපු උපදෙස් මාලාව ක්‍රියාත්මක කරලා, database එක ඇතුළේ නියම table එක හදන්න මේ command එක run කරන්න.

python manage.py migrate

දැන් අපේ `Note` model එකට අදාළ table එක database එකේ සූදානම්!

පියවර 3: Model එක Admin Panel එකට එකතු කිරීම

අපිට Admin Panel එකෙන් අපේ සටහන් බලන්න, එකතු කරන්න, මකන්න ඕන නම්, අපි මේ model එක admin එකේ register කරන්න ඕන.

`notes/admin.py` file එක open කරලා, පහත කේතය ඇතුළත් කරන්න.

from django.contrib import admin
from .models import Note # අපේ Note model එක import කරගන්න

# Note model එක admin site එකේ register කරන්න
admin.site.register(Note)
දැන් පරීක්ෂා කර බලන්න! Server එක run කරලා (`python manage.py runserver`), Admin Panel එකට (/admin) ගිහින් බලන්න. "Notes" කියලා අලුත් section එකක් එකතු වෙලා තියෙනවා දකින්න පුළුවන්.