在单独的表中自动注册Django模型

时间:2017-02-06 16:44:26

标签: django django-models

在我的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字段将所有投票链接到不同的对象,我想自动创建一个每个模型的单独表格,例如VideoLikesPlaylistLikes。当任一模型的对象数量变得非常大,或者将来添加其他可爱模型时,这会对性能产生重大影响。

是否有一种抽象到这个级别的方法,或者我是否必须创建一个抽象的Like模型,然后创建继承自VideoLike的{​​{1}},PlaylistLike模特?

1 个答案:

答案 0 :(得分:1)

您可以创建自己的工厂,进行一些内省并创建一个源自原始的“类似模型”,但在未来的道路上,您很可能需要根据具体情况处理那些“相似模型”。你使用他们各自的基础模型。另外,models.py中没有定义模型可能会导致混淆并使代码难以维护。