我试图对包含多个长部件的文章进行建模。这些部分应该可以逐个访问,这样我就可以跨页面拆分部分并创建目录。对于编辑,我希望两者都是可能的,逐个编辑和整体编辑。这几乎是MediaWiki现在可以实现的。
简单地在Part to Article中使用ForeignKey有一些缺点。您不能整体编辑文章,并且部分内没有排序,只有Django管理员中的随机列表。另外我认为它可能会对性能产生一些不良影响,因为大多数文章可能会同时显示为一个整体,这将涉及反向的ForeignKey决议。
现在你怎么样?是否有一些图书馆或框架可以缓解这种关系?
答案 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_related和prefetch-related的文档。