Джанго: несколько моделей на одном столе - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю приложение рецепта / поваренной книги (что-то вроде 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 и т. Д.)

Если я использую прокси, я не могу изменить / переопределить поведение поля изображения.

Есть ли способ расширить модели, но сохранить их в той же таблице в базе данных?

...