Я изучаю Django и пишу свою первую полукоммерческую модель. Многие из моих таблиц сделаны с похожим видом стиля, поэтому многие объекты имеют имя, описание и изображение. Пример:Уместно ли использовать абстрактные классы Django для простого повторного использования кода?
class Ingredient(models.Model):
# Standard to many classes
name = models.CharField(max_length=50)
description = models.TextField()
image_url = models.URLField(max_length=200)
# Unique to this class
foodgroup = ..... etc.
Поскольку название, описание и URL будет общим для многих объектов (которые в противном случае совершенно разные), я рассматривал определение базового класса, что каждый из них может унаследовать от:
class BaseObjectWithImage(models.Model):
# Standard to many classes
name = models.CharField(max_length=50)
description = models.TextField()
image_url = models.URLField(max_length=200)
class Meta:
abstract = True
class Ingredient(BaseObjectWithImage):
# Unique to this class
foodgroup = ..... etc.
Мои вопрос, который может быть ближе к простому вопросу о наилучшей практике ООП, заключается в том, является ли это глупым использованием абстрактного класса Django или же стоит лишить 3xN строк кода и позволить мне рассматривать большинство классов моделей как общий тип.