Чтобы создать пакет Python, который вы можете импортировать, вам нужно создать __init__.py
в папке. __init__.py
может быть пустым файлом. В вашем случае вы должны создать __init__.py
в вашей папке классов
Тогда вы можете использовать следующую инструкцию импорта: from classes.classeCarte import *
Обновление : Начиная с Django 1.4 эта функция встроена: см. prefetch_related .
Первый ответ: не тратьте время на написание чего-то вроде qbind, пока вы уже написали рабочее приложение, профилировали его и продемонстрировали, что N запросов на самом деле являются проблемой производительности вашей базы данных и сценариев загрузки.
Но, возможно, вы это сделали. Итак, второй ответ: qbind () делает то, что вам нужно, но было бы более идиоматично, если бы он был упакован в настраиваемый подкласс QuerySet с сопутствующим подклассом Manager, который возвращает экземпляры настраиваемого QuerySet. В идеале вы могли бы даже сделать их универсальными и многоразовыми для любых обратных отношений. Затем вы можете сделать что-то вроде:
Poll.objects.filter(category='foo').fetch_reverse_relations('choices_set')
Пример метода Manager / QuerySet см. в этом фрагменте , который решает аналогичную проблему, но в случае общих внешних ключей, а не обратных отношений. Было бы несложно объединить внутренности вашей функции qbind () с показанной там структурой, чтобы получить действительно хорошее решение вашей проблемы.
I think what you are trying to do is the term "eager loading" of child data - meaning you are loading the child list (choice_set) for each Poll, but all in the first query to the DB, so that you don't have to make a bunch of queries later on.
If this is correct, then what you are looking for is 'select_related' - see https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related
I noticed you tried 'select_related' but it didn't work. Can you try doing the 'select_related' and then the filter. That might fix it.
UPDATE: This doesn't work, see comments below.
Думаю, вы говорите: «Я хочу, чтобы для набора опросов были выбраны все варианты». Если да, попробуйте следующее:
polls = Poll.objects.filter(category='foo')
choices = Choice.objects.filter(poll__in=polls)