在我的Django应用程序中,我有几个代表不同类型内容的模型:
class Video(models.Model):
title = models.CharField(max_length=50)
class Playlist(models.Model):
videos = models.ManyToManyField(Video)
现在我想创建一种简单的方法,将like
添加到两个模型的实例中,可以像在https://bz.mercurial-scm.org/show_bug.cgi?id=5193应用中一样轻松设置:
class Video(models.Model):
title = models.CharField(max_length=50)
likes = LikeManager()
class Playlist(models.Model):
videos = models.ManyToManyField(Video)
likes = LikeManager()
但不像django-vote,它依赖于单一表格 Votes
通过GenericRelation
字段将所有投票链接到不同的对象,我想自动创建一个每个模型的单独表格,例如VideoLikes
和PlaylistLikes
。当任一模型的对象数量变得非常大,或者将来添加其他可爱模型时,这会对性能产生重大影响。
是否有一种抽象到这个级别的方法,或者我是否必须创建一个抽象的Like
模型,然后创建继承自VideoLike
的{{1}},PlaylistLike
模特?
答案 0 :(得分:1)
您可以创建自己的工厂,进行一些内省并创建一个源自原始的“类似模型”,但在未来的道路上,您很可能需要根据具体情况处理那些“相似模型”。你使用他们各自的基础模型。另外,models.py
中没有定义模型可能会导致混淆并使代码难以维护。