ویدیو آموزش مدل های انتزاعی در جنگو
پیش نیاز: 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 قرار دادم. حالا بقیه کلاس ها میتونند از این کلاس به عنوان کلاس پایه استفاده کنن.
برای اطلاعات بیشتر ویدیو رو تماشا کنید
ارسال نظر