在Django中建模一本书

时间:2014-06-01 15:51:16

标签: python django django-models

我试图对包含多个长部件的文章进行建模。这些部分应该可以逐个访问,这样我就可以跨页面拆分部分并创建目录。对于编辑,我希望两者都是可能的,逐个编辑和整体编辑。这几乎是MediaWiki现在可以实现的。

简单地在Part to Article中使用ForeignKey有一些缺点。您不能整体编辑文章,并且部分内没有排序,只有Django管理员中的随机列表。另外我认为它可能会对性能产生一些不良影响,因为大多数文章可能会同时显示为一个整体,这将涉及反向的ForeignKey决议。

现在你怎么样?是否有一些图书馆或框架可以缓解这种关系?

1 个答案:

答案 0 :(得分:1)

<强> models.py

class Article(models.Model):
    title = models.CharField(max_length=X)
    ...

class Part(models.Model):
    article = models.ForeignKey(Article)
    order = models.IntegerField()
    subtitle = models.CharField(max_length=X)
    content = models.TextField()
    ...

    class Meta:
        ordering = ('order',)

您必须在每个部分中设置顺序,每个查询都将返回按此字段排序的顺序。

使用InlineModelAdmin,您可以在其管理页面中修改文章的所有部分。

不应该产生性能影响:如果查询正确完成,文章的所有部分(甚至多篇文章的所有部分)都可以返回,只需对数据库进行一次点击即可。阅读有关select_relatedprefetch-related的文档。