У меня есть следующая модель.
CHOICES=( ('TEXT', 'TEXT'), ('IMAGE', 'IMAGE') )
type = models.CharField(max_length=10, blank=False, choices = CHOICES)
body = models.TextField()
Если поле типа TEXT
, то строка базы данных содержит какой-то простой текст.Если поле типа IMAGE
, то строка базы данных содержит имя файла изображения.
Я добавляю функцию print_item
в класс модели для обработки обоих случаев:
def print_item(self):
if self.type == "TEXT":
return self.body
elif self.type == "IMAGE":
return "<img src='%s' />" % self.body
Этоэто явно не общий или ОО способ сделать это.Другой вариант - создать два класса image
и text
, каждый из которых имеет функцию print_item
, а затем создать экземпляр объекта (на основе строки типа) и вызвать его функцию print_item
.
Каков наилучший подход в этой ситуации?