【发布时间】:2013-06-01 22:18:31
【问题描述】:
我已经多次仔细研究过有关内容类型框架的 Django 文档,但我对它的理解还不够好,无法在我的项目中实现通用关系。我一直在寻找有关此事的在线示例或教程,但我找不到一个。叫我笨蛋,但我需要一些帮助(请不要通过简单地链接到文档来回答)。基于网上资源的缺乏,我相信如果你用一个完整的例子来回答这个问题,你的回答可能是迄今为止关于 django 泛型关系的最有用的网上例子(奖金!)。
所以,我的问题是:有人可以展示一个简单的模型示例,或者几行代码来展示如何与通用模型的实例进行交互吗?
作为灵感,以下是我认为很常见的情况:
网站的媒体项目在很大程度上被视为相同,但略有不同。例如,假设有图像和视频项目,用户可以“喜欢”项目或对项目“评论”。无论是发布在图像还是视频项目上,点赞和 cmet 都应该被同等对待。因此,如果有一个 ItemView 用于查看用户相册中的图像或视频,则可以进行以下类型的调用:mediaitem.comments.all() 或 len(mediaitem.likes.all()) 或 comment.user_who_commented,而不必知道它是哪种媒体项是(图像或视频)。
我相信您需要 六个模型:
- 抽象
MediaItem类 - 两种不同类型的媒体项目:
ImageItem和VideoItem - 抽象
MediaItemActions类 - 可以对媒体项执行两种不同类型的操作:
Like和Comment
如果你知道如何使用这个 Django 特性,请给我们一个完整的例子!我觉得这将是一个非常强大的工具,并且渴望在我的应用程序中使用它。越明确越好。
【问题讨论】:
标签: python django django-models django-contenttypes generic-foreign-key