Я создаю приложение рецепта / поваренной книги (что-то вроде cookpad или allrecipes ) для личного проекта.
У меня есть модель для изображения, например, так:
class Image(Model):
type = (("R", "Recipe"), ("P", "Profile"),
("E", "Embedded"), ("B", "Base"))
name = models.CharField(max_length=55)
type = models.CharField(choices=type, max_length=1, default="B")
image = VersatileImageField(
upload_to=FileNameGenerator(prefix="images"),
placeholder_image=OnDiscPlaceholderImage(
path=join(settings.MEDIA_ROOT, "images", "default.jpg")
),
null=True,
blank=True,
)
Я хочу использовать одну таблицу только для хранения всего изображения. Но храните его в разных местах для каждого типа.
Пример:
- Базовое изображение будет в images / xxx.jpg
- Изображение профиля в профилях / xxxx.jpg
- Изображение рецепта в рецептах / xxx.jpg
- и т.д ..
Единственный способ, которым я знаю, - это сделать его абстрактной моделью и расширить ее. Но это создаст много таблиц (ProfileImage, RecipeImage и т. Д.)
Если я использую прокси, я не могу изменить / переопределить поведение поля изображения.
Есть ли способ расширить модели, но сохранить их в той же таблице в базе данных?