২১.৭ : ডক্টর মডেল

আজকে আসো আমরা ডক্টর মডেল নিয়ে কাজ করবো তবে শুরু তে আমাদেরকে specialization,ডিপার্টমেন্ট,designation এবং available টাইম মডেল নিয়েও কাজ করতে হবে। প্রত্যেকটা মডেল এ name আর slug থাকবে কারণ slug দিয়েই আমরা ফিল্টার এর কাজ গুলা করতে পারবো। মাথায় রাখবা একটা specialization এর under কিন্তু অনেক গুলা ডক্টর থাকতে পারে আবার একজন ডক্টর এর মাল্টিপল specialization থাকতে পারে।

আবার একটা ডিপার্টমেন্ট এর under এ মাল্টিপল ডক্টর থাকতে পারে আবার একজন ডক্টর চাইলে একটাই মাত্র ডিপার্টমেন্ট বা মাল্টিপল ডিপার্টমেন্ট এর under এ থাকতে পারে। নরমালি তারা একটাই ডিপার্টমেন্ট এর under এ থাকে।

নিচের কোড গুলা খেয়াল করো।

from django.db import models
from django.contrib.auth.models import User
from patient.models import Patient
# Create your models here.

class Specialization(models.Model):
    name = models.CharField(max_length = 30)
    slug = models.SlugField(max_length = 40)
    def __str__(self):
        return self.name
class Designation(models.Model):
    name = models.CharField(max_length = 30)
    slug = models.SlugField(max_length = 40)
    def __str__(self):
            return self.name
class AvailableTime(models.Model):
    name = models.CharField(max_length = 100)
    
    def __str__(self):
        return self.name

তো এখন আসো আমরা আমাদের ডক্টর মডেল নিয়ে কাজ শুরু করি। এখানেও সেম ভাবে আমাদের user মডেল এর প্রয়োজন পড়বে, প্রত্যেকটা ডক্টর ই একেকজন ইউজার সো ডক্টর এর সাথে ইউজার মডেল এর সম্পর্ক one to one। তারপর তার ইমেজ নিবো, গুগল মিট লিংক নিবো আর fee নিবো তারপর department, specialization, available টাইম এর সাথে many to many রেলেশনশীপ দিয়ে দিবো আমরা। আর যেহেতু এখানেও আমরা ইউজার মডেল ইউজ করতেছি সো আমাদেরকে ইউজার মডেল এ গিয়ে একজন ডক্টর এর first name,last name কে নিয়ে আসতে হবে।

class Doctor(models.Model):
    user = models.OneToOneField(User, on_delete = models.CASCADE)
    image = models.ImageField(upload_to="doctor/images/")
    designation = models.ManyToManyField(Designation)
    specialization =  models.ManyToManyField(Specialization)
    available_time = models.ManyToManyField(AvailableTime)
    fee = models.IntegerField()
    meet_link = models.CharField(max_length = 100)
    
    def __str__(self):
        return f"{self.user.first_name} {self.user.last_name}"

Last updated