মডিউল ৭-৩ঃ প্রজেক্টে মডেল রিলেশনশিপ তৈরি

এই মডিউলে মুলত ব্লগ প্রজেক্টের ৪ টি মডেলের স্ট্রাকচার ডিফাইন করে তাদের মধ্যে রিলেশনশিপ তৈরি করা হবে।

তাহলে দেরি না করে ৪ টি মডেল তৈরি করে ফেলি-

Code:: 7.3.1 author/models.py

from django.db import models

# Create your models here.
class Author(models.Model):
    name = models.CharField(max_length=100)
    bio = models.TextField()
    phone_no = models.CharField(max_length=12)
    
    def __str__(self):
        return self.name

এখানে, পাইথন ক্লাস Author একটি মডেল হিসেবে কাজ করবে কেননা Author ক্লাস models.Model কে ইনহেরিট করেছে। CharField name এর এ্যাট্রিবিউট max_length ডিফাইন করা জরুরি।

Code:: 7.3.2 categories/models.py

from django.db import models

# Create your models here.
class Category(models.Model):
    name = models.CharField(max_length=100)
    
    def __str__(self):
        return self.name

Code:: 7.3.3 profiles/models.py

from django.db import models
from author.models import Author
# Create your models here.
class Profile(models.Model):
    name = models.CharField(max_length=100)
    about = models.TextField()
    author = models.OneToOneField(Author, on_delete=models.CASCADE, default=None)
    
    def __str__(self):
        return self.name

Profile মডেলের author ফিল্ড কে একটি OneToOneField ফিল্ড হিসেবে ডিফাইন করেছি কেননা আমরা চাই একজন Author এর কেবল মাত্র একটি Profile থাকবে।এছাড়া , ফিল্ডটির on_delete এ্যাট্রিবিউট এর ভ্যালু সেট করা হয়েছে models.CASCADE , এর ফলে Author মডেলের কোনো একটা রেকর্ড কোনো কারনে ডিলিট হলে সেই Author এর সাথে রিলেভেন্ট Profile ও ডিলিট হয়ে যাবে।

Code:: 7.3.4 posts/models.py

from django.db import models
from categories.models import Category
from author.models import Author
# Create your models here.

class Post(models.Model):
    title = models.CharField(max_length=50)
    content = models.TextField()
    category = models.ManyToManyField(Category)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    
    def __str__(self):
        return self.title

Post মডেলের ফিল্ড category কে একটি ManyToManyField ফিল্ড হিসেবে ডিফাইন করা হয়েছে (Category মডেলের সাথে) , যার ফলে একটি Post এর একাধিক Category থাকতে পারবে আবার একটি Category এর একাধিক Post থাকতে পারবে।

পূর্বের মডিউলের আলোচনা থেকে আমরা জানি যে Post মডেলের সাথে Author মডেলের One to Many রিলেশনশিপ থাকবে, সহজভাবে বললে, একটি Post এর একজনই Author থাকবে যদিও একজন Author এর একাধিক Post থাকতে পারে।এখানে, One to Many রিলেশনশিপ ইমপ্লিমেন্ট করার জন্য Post মডেলে Author এর জন্য ForeignKey ফিল্ড ব্যবহার করেছি, একটি একটি Post এর একজনই Author থাকবে ।

এখন, মডেলগুলোকে স্ব স্ব এ্যাপের admin.py ফাইলে রেজিস্টার করে নেই যেন এডমিন প্যানেল থেকে তাদের এক্সেস করতে পারি-

Last updated