в SQL или Django ORM, что стандартный путь состоит в том, чтобы иметь заказанный one-many?

Ваш RecyclerView должен быть указан последним в пределах DrawerLayout, чтобы иметь правильный z-порядок. В настоящее время он открывает «под» CoordinatorLayout, поэтому вы не можете манипулировать им прикосновением. Переместите его в положение CoordinatorLayout.

7
задан Jim Carroll 16 December 2008 в 12:50
поделиться

4 ответа

Я ненавижу эту проблему..., и я сталкиваюсь со всем этим время.

Для моего нового сайта Django у нас была Новостная рассылка, которая содержала Статьи N и, конечно, порядок был важен. Я назначил порядок по умолчанию возрастающий Article.id, но это перестало работать, если Статьи вводились во что-то другое, чем "корректный" порядок.

На странице Newsletter change_form.html я добавил определенное волшебство jQuery использование Интерфейсного плагина ( http://interface.eyecon.ro/ ). Я показываю заголовки связанных Статей, и пользователь может перетащить их вокруг, как им нравится. Существует onChange обработчик, который повторно вычисляет Article.id's в article_order поле.

Обладают,
Peter

Для app=content, model=Newsletter, следующее находится в templates/admin/content/newslettter/change_form.html

{% extends 'admin/change_form.html' %}

{% block form_top %}{% endblock %}
{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="/media/js/jquery.js"></script>
<script type="text/javascript" src="/media/js/interface.js"></script>
<script>
$(document).ready(
    function () {
        $('ol.articles').Sortable(
            {
                accept :        'sortableitem',
                helperclass :   'sorthelper',
                activeclass :   'sortableactive',
                hoverclass :    'sortablehover',
                opacity:        0.8,
                fx:             200,
                axis:           'vertically',
                opacity:        0.4,
                revert:         true,
                trim:           'art_',
                onchange:
                    function(list){
                        var arts = list[0].o[list[0].id];
                        var vals = new Array();
                        var a;
                        for (a in arts) {
                            vals[a] = arts[a].replace(/article./, '');
                        }
                        $('#id_article_order').attr('value', vals.join(','));
                    }
            });
    }
);
</script>
{% endblock %}

{% block after_related_objects %}
{% if original.articles %}
<style>
.sortableitem {
    cursor:move;
    width: 300px;
    list-style-type: none;
    }
</style>

<h4>Associated Articles</h4>
<ol class="articles" id="article_list">
{% for art in original.articles %}
    <li id="article.{{art.id}}" class="sortableitem">{{art.title}}</li>

{% endfor %}
</ol>
{% endif %}
{% endblock %}
5
ответ дан 7 December 2019 в 01:28
поделиться

"добавленный пронумерованное поле порядка" - хороший.

"обновление все объекты с их новыми номерами заказа" - преодолимый.

числа Использования с разрывами.

  • Плавающая точка. Тем путем кто-то может вставить "1.1" между 1 и 2. Я нахожу, что это работает приятно, поскольку большинство людей может понять, как упорядочивание работает. И Вы не должны волноваться слишком много о сколько пространства для отъезда - существуют партии и много пространства между каждым числом.

  • На начальной загрузке, пронумеруйте статьи 100 или 1000 или что-то с пространством между каждым. В этом случае необходимо предположить сколько цифр для отъезда в переупорядочение.

  • А разделенное от запятой положение. Первоначально, они - весь (1,0), (2,0), (3,0), и т.д. Но когда Вы хотите перестроить вещи, Вам, возможно, придется представить (2,1) и (2,2) это следует (2,0), но прежде (3.0).

    Это выглядит довольно сложным, но некоторые люди как этот вид сложности. Это - по существу то же, как с плавающей точкой, кроме единственного числа замена (целое число, неявная часть) кортеж. И это расширяется на иерархии дескриптора.

2
ответ дан 7 December 2019 в 01:28
поделиться

Я столкнулся с этим так много раз, что я обосновался на управлении ими динамично в BL или UI и затем просто сохранении упорядочивания специальному столбцу, после того как пользователь счастлив. SQL просто intentially разработан для не обработки упорядочиваний, и он всегда сопротивляется.

1
ответ дан 7 December 2019 в 01:28
поделиться

Это поздний ответ на вопрос, но я просто хотел вмешаться и отметить, что B-деревья - отличная структура данных для такого рода вещей, особенно если ваши шаблоны доступа не Не требует, чтобы вы извлекали сразу весь список.

http://en.wikipedia.org/wiki/B-tree

0
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

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