ویدیو آموزش مدل های انتزاعی در جنگو

امیرحسین بیگدلو April 2023

پیش نیاز: python abstract class

امروز میخوام در رابطه با modelهای abstract در جنگو براتون بگم.

یک زمانی هست که شما دارید مدل هاتون رو طراحی میکنید و بعد یهو متوجه میشید که یکسری از فیلدها و متدها تکراری هستش. اینجا میتونید از مدلها abstract استفاده کنید که کد کمتری بنویسید. مثال زیر رو ببینید:

class Student(models.Model):
    name = models.CharField(max_lenght=30)
    age = models.PositiveIntegerField()
    year = models.PositiveIntegerField()

    def __str__(self):
        return self.name

class Teacher(models.Model):
    name = models.CharField(max_lenght=30)
    age = models.PositiveIntegerField()
    major = models.CharField(max_length=30)
    
    def __str__(self):
        return self.name

در مثال بالا دوتا مدلی که داریم خیلی شبیه به هم هستند و کد تکراری زیادی نوشتیم که اصلا خوب نیست.

بجاش چیکار میکنید؟! میایید از مدل های abstract استفاده میکنید.

کد بالا رو به شکل زیر تغییر میدم:

class Common(models.Model):
    name = models.CharField(max_lenght=30)
    age = models.PositiveIntegerField()

    def __str__(self):
        return self.name

    class Meta:
        abstract = True

class Student(Common):
    year = models.PositiveIntegerField()

class Teacher(Common):
    major = models.CharField(max_length=30)

در کد بالا یک کلاس به اسم Common ساختم و تمام موارد تکراری رو داخلش نوشتم. و بعد به عنوان metadata مقدار abstract رو True قرار دادم. حالا بقیه کلاس ها میتونند از این کلاس به عنوان کلاس پایه استفاده کنن.

برای اطلاعات بیشتر ویدیو رو تماشا کنید

ویدیوهای مشابه



آموزش manager جنگو
امیرحسین بیگدلو

ارسال نظر


عماد

1 سال قبل پاسخ به نظر

با عرض سلام و خداقوت
متاسفانه سرعت سرور پایینه و در حین مشاهده فیلم ها، چندین بار متوقف میشه. احیانا شما هم در پشت صحنه، متوجه این کند بودن سرور شدید؟

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
بله از مشکل خبر دارم. این کندی سرور از سمت ابرآروان هست و کاری از دست من برنمیاد. بهشون هم گفتم و گفتن که بزودی برطرف میشه.

مونگارد