【发布时间】:2011-03-15 13:55:38
【问题描述】:
我正在尝试为希望在 Django 中创建的论坛设计模型。
到目前为止我有:
class Forum(models.Model): name = models.CharField(max_length=255) slug = models.SlugField(max_length=150) description = models.TextField() def __unicode__(self): return self.name class SubForum(models.Model): parent_forum = models.ForeignKey('Forum', related_name='forums') parent = models.ForeignKey('self', blank=True, null=True, related_name='children') name = models.CharField(max_length=300) slug = models.SlugField(max_length=150) description = models.TextField() def __unicode__(self): if self.parent: return u'%s: %s - %s' % (self.parent_forum.name, self.parent.name, self.name) return u'%s: %s' % (self.parent_forum.name, self.name)
这在很大程度上有效,因为我可以选择父类别,尽管我不确定如何选择孩子父母的父母。例如,如果我有以下内容:
Grandparent -> Parent -> Child
如何从孩子中选择祖父母?
这种层次结构也使 Django 管理员相当混乱,因为它没有以有序的方式级联。我是否必须从头开始构建整个管理员才能将其组织成可用的界面?
最后,SubForum 模型中的__unicode__ 函数允许我打印父母,但祖父母呢。我可以让__unicode__ 打印所有祖先吗?
谢谢。
【问题讨论】:
-
为什么有
SubForum?为什么不把parent字段放在Forum中?您仍然可以通过Forum.objects.filter(parent=None)轻松获取所有顶级论坛的列表。 -
但是如果我在
Forum中有一个名为SubForum的字段和parent字段,我可以选择所有知道顶层名称的Forums 孩子吗?或者我会获取所有Forum和SubForum条目,然后在查询之后安排它们?
标签: django django-models django-templates