我正在玩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)})
答案 0 :(得分:3)
让我猜猜......你有类似的东西:
class Foo(object):
childs = []
什么时候应该有:
class Foo(object)
def __init__(self):
self.childs = []
不同之处在于,在第一种情况下,您的所有Foo实例将共享相同的子对象(类属性),而在前者中,每个实例都将拥有自己的子对象(实例属性)。