Django: самый эффективный способ запросить много записей? - PullRequest
0 голосов
/ 14 октября 2010

У меня есть таблица с несколькими тысячами записей (продуктов).Каждый продукт имеет 4 разные категории:

CAT1 CAT2 CAT3 CAT4

Интересно, есть ли метод или лучшая практика для динамического извлечения доступных категорий на основе уже выбранных категорий (с использованием Ajax).Пример:

, если CAT1 = green, все продукты с CAT1 = green будут иметь серию категорий CAT2 и так далее.Я хотел бы знать, какие категории CAT2 CAT3 CAT4, чьи продукты соответствуют CAT1 = green.После того, как я установил значение или CAT2, я хотел бы сделать то же самое, основываясь на значениях CAT1 && CAT2.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 октября 2010

Спасибо за ответы.Цепной выбор работает только частично, поскольку у меня нет иерархической структуры.Вот пример данных:

PRODUCT 1
CAT1 = vegetables
CAT2 = heavy
CAT3 = green

PRODUCT 2
CAT1 = vegetable
CAT2 = light
CAT3 = red

PRODUCT 3
CAT1 = diary
CAT2 = heavy
CAT3 = red

В моем шаблоне я хотел бы сделать систему так, чтобы, когда пользователи выбирают CAT1 = vegetables, они видели CAT2 вариантов, которые были бы тяжелыми и легкими, если они выбираютCAT1 = diary единственная опция для CAT2 тяжелая и т. Д.

Мой путь - получить json всей таблицы продуктов и искать доступные значения после выбора категории.... но таблица продуктов включает в себя тысячи товаров, и я уверен, что это замедлит работу всего приложения.Когда вы добавляете функцию фильтра (list_filter), на странице администратора есть нечто похожее, поскольку в ней отображаются только поля, в которых есть записи.

СПАСИБО!

0 голосов
/ 14 октября 2010

Это метод, обычно известный как «цепочка выбора» или «цепочка выбора».

Вы можете использовать довольно простой JavaScript для этого, как показано в ответе на Как ограничить опции поля выборана основе другого поля выбора в django admin

Вы также можете использовать предварительно упакованное решение, такое как django-smart-selects (найдено через ответ SO на выбор цепи django)

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