第二次请求后重复结果

时间:2010-10-26 01:29:23

标签: python django

我正在玩django和python,并在这里遇到了一些障碍。我查询我的模型并返回对象,然后对结果执行一些简单的操作并将它们返回到视图。在第二次请求之后,论坛类别的孩子是重复的,我不知道为什么会这样。

ForumBuilder类,用于构建类别列表并为该类别添加论坛

class ForumBuilder:
    def childern(self, parent, forums):
        for forum in forums:
            if forum.parent is None or parent.id != forum.parent.id:
                continue
            parent.childs.append(forum)
    def build(self, forums):
        categories = []
        for forum in forums:
            if forum.parent is None:
                categories.append(forum)
            self.childern(forum, forums)
        return categories

索引视图

def index(request):
    forums = Forum.objects.all().order_by('-order')
    builder = ForumBuilder()
    return render_to_response('forums/index.html', {'categories': builder.build(forums)})

1 个答案:

答案 0 :(得分:3)

让我猜猜......你有类似的东西:

class Foo(object):
    childs = []

什么时候应该有:

class Foo(object)
    def __init__(self):
        self.childs = []

不同之处在于,在第一种情况下,您的所有Foo实例将共享相同的子对象(类属性),而在前者中,每个实例都将拥有自己的子对象(实例属性)。