Django:同一张桌子上有多个模型

时间:2018-11-15 06:20:23

标签: python django django-models

我正在为个人项目构建食谱/食谱应用程序(类似于cookpadallrecipes)。 我有一个像这样的图像模型:

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
  • 位于profile / xxxx.jpg的个人资料图片
  • recipes / xxx.jpg上的食谱图像
  • 等。

我知道的唯一方法是将其制成抽象模型并对其进行扩展。但这会创建许多表(ProfileImage,RecipeImage等)。

如果使用代理,则无法更改/覆盖图像字段的行为。

是否有一种方法可以扩展模型,但可以将其保存到数据库中的同一表中?

0 个答案:

没有答案