2017-02-08 13 views
1

Я изучаю 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 строк кода и позволить мне рассматривать большинство классов моделей как общий тип.

ответ

1

Не глупо использовать классы абстаза. Как Django, так и python являются относительно полигамными, поскольку они позволяют использовать множество различных стилей программирования (в зависимости от того, что вам подходит). Просто убедитесь, что вы принимаете последовательное и сознательное решение относительно того, создают ли модели отдельные таблицы, каждая из которых имеет свою собственную копию повторяющихся столбцов или каждый из них содержит ForeignKey для общей базовой таблицы.

 Смежные вопросы

  • Нет связанных вопросов^_^