২১.৬ : পেশেন্ট মডেল তৈরী

আজকে আসো আমরা আমাদের পেশেন্ট মডেল নিয়ে কাজ করবো। যেহেতু আমরা একজন পেশেন্ট এর username, first_name এইগুলার সাথে এক্সট্রা হিসেবে phone নম্বর এবং ইমেজ এই দুইটা ফিল্ড নিবো। যেহেতু কোনো কাস্টম ইউজার তৈরি করতেছি না আমরা সো django এর বিল্ট ইন ইউজার মডেল দিয়েই কাজ করবো।

সো পেশেন্ট মডেল এর সাথে আমাদের ইউজার মডেল এর সম্পর্ক হচ্ছে one to one কারণ একজন ইউজার এর শুধু মাত্র একটাই পেশেন্ট একাউন্ট থাকবে আবার একজন পেশেন্ট এর শুধু মাত্র একটাই ইউজার একাউন্ট থাকবে। সো নিচের মত করে আমরা পেশেন্ট মডেল তৈরি করে ফেলবো।

from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Patient(models.Model):
    user = models.OneToOneField(User, on_delete = models.CASCADE)
    image = models.ImageField(upload_to='patient/images/')
    mobile_no = models.CharField(max_length = 12)
    
    def __str__(self):
        return f"{self.user.first_name} {self.user.last_name}"

এখন আমরা আমাদের মডেল এডমিন নিয়ে কাজ করবো সেখানে আমরা টেবিল ফরম্যাট এ ইউজার এর first name, last name এইগুলা দেখবো। কিন্তু তারা ত ইউজার মডেল এ আছে তাইলে কিভাবে আমরা পেশেন্ট এর ফাস্ট নেম দেখতে পাবো??

সেটা হচ্ছে আমরা একটা ফাংশন বানাবো নিজের মতো করে নাম দিতে পারবো। সেখানে প্যারামিটার হিসেবে obj কে নিবো, এই অবজেক্ট টা হচ্ছে আমি এডমিন প্যানেল থেকে যে পেশেন্ট কে দেখবো সেই পেশেন্ট এর অবজেক্ট। সেই অবজেক্ট থেকে first_name কে বের করে আনতে পারব আমরা।

from django.contrib import admin
from . import models
# Register your models here.
class PatientAdmin(admin.ModelAdmin):
    list_display = ['first_name','last_name','mobile_no', 'image'] # nicher function
    # er name gula use korte hobe ekhane.
    
    def first_name(self,obj): # name gula nijer moto kore dite parbe
        return obj.user.first_name # patient er sathe user model er connection ache tai user model er kache giye tar first name ke ber kore anlam
    
    def last_name(self,obj):
        return obj.user.last_name
    
    
admin.site.register(models.Patient, PatientAdmin)

Last updated