
Bob
18.08.2017
07:22:07
Он отличается тем что для каждого узла рассчитывается left и right части, на основе которых потом очень ловко и быстро можно выполнять срезы дерева

Mikhail
18.08.2017
07:22:24
структурно он отличается тем, что помимо собственно ФК на самого себя, он добавляет ещё ряд полей

Bob
18.08.2017
07:22:32
а так же ловить - узел является листом или родителем и т.д.

Mikhail
18.08.2017
07:22:46
которые, собственно, и делают всю древесную магию

Google

Bob
18.08.2017
07:22:53
Плата за все это - когда появляется новый узел дерево частично перерасчитывается

Andrey
18.08.2017
07:24:55
Блин, это все и так знали. ?

Bob
18.08.2017
07:25:51
Ну отлично

Andrey
18.08.2017
07:25:52
Спор ни о чем, классика.
Никто тут, кстати, не предлагал собраться ИРЛ? Может я что-то пропустил?

Bob
18.08.2017
07:26:36
Тогда вопросы закрываем, mptt меняем на id-parent_id ибо то же самое ?

Mikhail
18.08.2017
07:27:08
есть важное отличие

Bob
18.08.2017
07:27:17

Mikhail
18.08.2017
07:27:21
а именно - буковка P в MPTT
P for PREORDER
если у нас есть два или более узла с общим родителем, то в случае списков смежности мы не можем гаратировать порядок следования этих узлов: не знаем, какой будет первым, какой последним

Andrey
18.08.2017
07:28:40

Mikhail
18.08.2017
07:28:53
в MPTT же порядок следования нод зафиксирован
поэтому MPTT рулит

Google

Bob
18.08.2017
07:29:20
Андрей, а вот вы мигрировали с mptt на id-parent_id, а расскажите кратко - почему?

Andrey
18.08.2017
07:30:37

Bob
18.08.2017
07:31:22
Ахаха :)

Andrey
18.08.2017
07:32:35
? У меня была обычная модель. И через какое-то время понадобилось превратить её в mptt.
Обратно не приходилось.

Mikhail
18.08.2017
07:32:55
обратно можно только с потерей данных :(

Dan
18.08.2017
07:33:10
а чего там теряется ?

Andrey
18.08.2017
07:33:20
А что потеряется, кстати, кроме порядка?

Mikhail
18.08.2017
07:35:01
порядок потеряется. Это довольно важно

Dan
18.08.2017
07:35:44
так если важно заечем убирать mptt ?

Mikhail
18.08.2017
07:36:30
понятия не имею. Кто-то хочет убирать

Bob
18.08.2017
07:37:13
@dantyan иногда mptt (думаю) не удовлетворяет ожиданиям по производительности

Mikhail
18.08.2017
07:37:54
mptt плох только на вставке поддеревьев

Dan
18.08.2017
07:38:09

Andrey
18.08.2017
07:38:24
Я предполагаю, что можно отказаться в угоду производительности. И перефигачить руками поведение на БД.
Но это какая же нужна производительность.
И сколько нужно будет писать триггеры.

Bob
18.08.2017
07:38:27
ну да, id-parent_id

Mikhail
18.08.2017
07:38:30
но в типичном случае, мне кажется, гораздо чаще деревья читают, чем изменяют
а на чтение mptt очень быстр

Bob
18.08.2017
07:39:01
да я говорю о добалении в дерево mptt

Mikhail
18.08.2017
07:39:35
а сравнивать id-parent_id с mptt - это как мускульный движок myisam сравнивать с innodb

Google

Mikhail
18.08.2017
07:39:51
он тоже быстрый и тупой. И никакой гарантии целостности данных

Bob
18.08.2017
07:40:54
@marazmiki да это понятно, но вот скажем как решить нормально задачу ветвления комментариев с большим потоком?

Set
18.08.2017
07:40:56
подскажите пожалуйста в чем может быть проблема выводит ошибку
Reverse for 'project_detail' with arguments '(1,)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'ru/projectt/$get/(?P<pk>[0-9]+)/$']
ругается на {% url 'all_projects:project_detail' new.pk %}
урл
url(r'^get/(?P<pk>[0-9]+)/$', ProjectDetail.as_view(), name='project_detail'),

Mikhail
18.08.2017
07:41:13
у меня есть pet project, там 4кк комментариев на mptt

Bob
18.08.2017
07:41:30
Серьезно?

Mikhail
18.08.2017
07:41:52
честное пионерское

Massimo
18.08.2017
07:41:55

Andrey
18.08.2017
07:42:10

Bob
18.08.2017
07:42:38
честное пионерское
нет оснований недоверять, ладно я понял, что моё "лучше перебдеть" меня подвело ?

Mikhail
18.08.2017
07:42:53
ну на самом деле, есть оговорки :)

Bob
18.08.2017
07:43:01
хаха :)

Mikhail
18.08.2017
07:43:06
я говорю именно про django-mptt

Andrey
18.08.2017
07:43:07

Mikhail
18.08.2017
07:43:38
он сделан очень продуманно; фактически каждая нода нулевого уровня является свобственным деревом

Set
18.08.2017
07:44:05

Mikhail
18.08.2017
07:44:33
поэтому даже если комментариев к какому-то посту наберётся 500 штук (так редко, но бывает), в самом хучшем случае обновится только 499 записей. Это просто тьфу

Bob
18.08.2017
07:44:57
Ок, вопрос думаю закрыт, пойду кнопки давить

Google

Andrey
18.08.2017
07:45:28

Mikhail
18.08.2017
07:45:39
поэтому django-mptt использовать можно и стоит. Собственный колхоз с одним эффективным стволом - с осторожностью.

Set
18.08.2017
07:45:50
Что пишет?
Reverse for 'project_detail' with arguments '()' and keyword arguments '{u'pk': 1}' not found. 1 pattern(s) tried: [u'ru/projectt/$get/(?P<pk>[0-9]+)/$']

Andrey
18.08.2017
07:46:54

Bob
18.08.2017
07:47:13

Admin
ERROR: S client not available

Set
18.08.2017
07:49:02

Andrey
18.08.2017
07:49:37

Mikhail
18.08.2017
07:49:41
дайте угадаю
там написано url('^projects$/', include('...urls', namespace=''))

Set
18.08.2017
07:50:38
Кидай urls и шаблон на пасту, посмотрим.
urlpatterns = [
url(r'^$', ProjectListView.as_view(), name='projects_list'),
url(r'(?P<slug>[-\w]+)/$', ProjectListView.as_view(), name='cat_projects_list'),
url(r'(?P<pk>[0-9]+)/$', ProjectDetail.as_view(), name='project_detail'),
]

Andrey
18.08.2017
07:52:04

Set
18.08.2017
07:53:03

Eugene
18.08.2017
07:59:26
https://httpstatuses.com/ кину ссылку в чатик, может быть кому-нибудь будет полезно :)

b0g3r
18.08.2017
08:01:21
www.restapitutorial.ru/httpstatuscodes.html
кину гораздо более информативную штуку :)

Eugene
18.08.2017
08:01:42
Не удается получить доступ к сайту :))

b0g3r
18.08.2017
08:01:43
.com - откроется нерусская
а так?)

Eugene
18.08.2017
08:02:35
Работает!

Google

amureki
18.08.2017
08:06:53
как понять, что сейчас идет конфа...люди генерят тонны ПР в джангу на спринтах:)

b0g3r
18.08.2017
08:07:47
хехе
8932 ишью и пр... это за сколько лет?)
или у пр там отдельная нумерация?

Mikhail
18.08.2017
08:08:43
а никому не приходилось пагинацию для raw-кверисетов делать?

Andrey
18.08.2017
08:43:42
Правда там не тестилось с тройкой.

Mikhail
18.08.2017
08:47:11
ну... я сам написал
но да, примерно так же действовал

Leonid
18.08.2017
10:06:45
день добрый кто нибудь сталкивался с пакетом https://github.com/satels/django-ipgeobase
На этапе установки выдает ошибку
file "\\\Python\Python36-32\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 448: character maps to <undefined>

Denis
18.08.2017
10:10:39

Leonid
18.08.2017
10:10:48
да

Set
18.08.2017
10:13:02
у меня возникли вопросы по реализации класса активе как для ссылок как его реализовать у меня есть ошибочный пример
<a class="{% if url_name == {% url 'all_projects:cat_projects_list' category.slug %} %}active{% endif %}" href="{% url 'all_projects:cat_projects_list' category.slug %}"

Senpos
18.08.2017
10:19:07
amureki где-то давно скидывал свой пример, не могу уже найти
Вот на его основе вариант
{% with request.resolver_match as url_info %}
<li class="nav-item {% ifequal url_info.namespace 'blog' %}active{% endifequal %}">
<a class="nav-link" href="{% url 'blog:post_list' %}">Blog</a>
</li>
{% endwith %}
Вот, таки нашел