Django模型与同一模型的多重关系

时间:2012-09-02 15:03:25

标签: django django-models model

我正在尝试为我的应用建模,但我遇到了这个问题:

我有一张幻灯片,可以是图片,文字或视频。 此外,图像和视频可以在同一用户的许多不同幻灯片和演示文稿中。

我还想存储幻灯片所属的演示文稿和插入日期(幻灯片必须有订单)。

class Slide(models.Model):
    user = models.ForeignKey(User)
    presentation = models.ForeignKey(Presentation)
    insert_date = models.DateTimeField(auto_now_add=True)

-

class Image(models.Model):
    def get_image_path(instance, filename):
        return os.path.join('users/images', str(instance.id), filename)

    user = models.ForeignKey(User)
    slide = models.ManyToManyField(Slide)
    image = models.ImageField(upload_to=get_image_path)
    insert_date = models.DateTimeField(, auto_now_add=True)

-

class SlideText(models.Model):
    slide = models.OneToOneField(Slide)
    text = models.TextField()

[视频模型将类似于图像]

此模型的问题是幻灯片可以为空,幻灯片可以同时包含图像和文本(以及视频),但它不应该。

我可以想象这是一个常见的问题:某些项目有一些相关的信息依赖于“项目的类型”(即图像的幻灯片,文本的幻灯片......),那么什么是常见的解决方案?

任何帮助真的很感激!谢谢!

1 个答案:

答案 0 :(得分:0)

Generic relations就是你想要的。