Заказанные списки в django

Так как кажется, что вы используете jQuery, вы можете сделать следующее:

   var countBoxes = function(){
      const result = [];
      var $rows = $(document).find("tr"); //demo purpose, normally you would pass this as a param 
        $rows.each(function(i, elem){
         result.push({row: i+1, amount: $(elem).find('input[type="checkbox"]:checked').length}); 
      });

      console.log(result) //=>          {row: 1, amount: 1}
                                    //  {row: 2, amount: 1}
                                    //  {row: 3, amount: 2}
                                    //  {row: 4, amount: 1}
}

Он просто перебирает все строки () и проверяет входные данные флажка типа, которые отмечены (: флажок) .

13
задан Evgeny Lazin 9 January 2009 в 14:06
поделиться

3 ответа

По существу вторым решением, которое Вы предлагаете, является связанный список. Связанный список, реализованный на уровне базы данных, обычно является не хорошей идеей. Получать список n элементы, Вам будет нужно n доступ к базе данных (или использование усложнил запросы). Мудрая производительность, получая список в O (n) ужасно не эффективна.

В обычном коде связанный список используется для поправлений, вставляют производительность по сравнению с массивами (никакая потребность переместить все элементы). В Вашей базе данных обновление всех элементов не состоит в том, который усложнил только в 2 запросах:

UPDATE item.order = item.order + 1 FROM item WHERE order > 3
INSERT INTO item (order, ...) VALUES (3, ...)

Я не забываю видеть reuseable приложение, которое реализовало все это и хороший администраторский интерфейс, но я не могу найти его прямо сейчас...

Подводя итоги, определенно используйте решение № 1 и держитесь подальше от решения № 2, если у Вас нет очень очень серьезного основания не к!

21
ответ дан 1 December 2019 в 22:40
поделиться

Существует другое решение.

class Item(models.Model):
    data = models.TextField()

Можно просто засолить или список маршала Python в поле данных и загрузку это. Этот хорош для обновления и чтения, но не для поиска, например, выборки всех списков, которые содержат определенный объект.

-6
ответ дан 1 December 2019 в 22:40
поделиться

Это зависит от того, что Вы хотите сделать.

Первый кажется лучше, чтобы сделать единый запрос в базе данных и получить все данные в правильном порядке

Второй кажется лучше для вставки элемента между двумя существующими элементами (потому что в первом необходимо было бы изменить много объектов, если номера являются порядковыми),

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

6
ответ дан 1 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: