Результаты дублируются после 2-го запроса - PullRequest
0 голосов
/ 26 октября 2010

Я играю с django и python, и здесь у меня возникло некоторое препятствие. Я запрашиваю свою модель и возвращаю объекты, а затем выполняю некоторые простые операции с результатами и возвращаю их в представление. После 2-го запроса дочерние элементы для категории форума дублируются, и я понятия не имею, почему это происходит.

ForumBuilder class , который формирует список категорий и добавляет форумы для этой категории

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 Ответ

3 голосов
/ 26 октября 2010

Дай угадаю ... У тебя есть что-то вроде:

class Foo(object):
    childs = []

Когда у вас должно быть что-то вроде:

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

Разница в том, что в первом случае все ваши экземпляры Foo будут использовать один и тот же дочерний объект (атрибут класса), а в первом случае каждый экземпляр будет иметь своих собственных дочерних элементов (атрибут экземпляра).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...