@pydjango

Страница 60 из 1273
Alexander
18.11.2016
16:20:47
uuid4 может повторяться (оооочень маловероятно правда), а вот uuid1 не должен

но чем больше нод - тем выше риск, что повторяться оно будет (uuid4)

parikLS
18.11.2016
16:21:49
А как же перфоманс? При джоинах например

Alexander
18.11.2016
16:22:03
c uuid медленнее, конечно)

Google
Alexander
18.11.2016
16:22:31
но если всё в кешах, то особо разницы и нет

parikLS
18.11.2016
16:23:00
А почему не держать колонку с юидом просто рядом, в отдельной колонке

Ну все в кеш не запихнешь)

Alexander
18.11.2016
16:24:08
мне нравится и другая особенность uuid - можно скрывать количество объектов в таблице и темпы роста этого количества

то есть если светить обычные id'шники - будет понятно, сколько у вас в системе, к примеру, юзеров или проектов или чего-нибудь там ещё

и можно измерить, сколько добавилось за месяц

amureki
18.11.2016
16:50:15
то есть если светить обычные id'шники - будет понятно, сколько у вас в системе, к примеру, юзеров или проектов или чего-нибудь там ещё
А можно использовать норм ид для внутренних нужд, а наружу показывать ууид или любой другой рандом

Alexander
18.11.2016
16:52:35
если нам потребуется потом разделить таблицы, то с числовыми идентификаторами будет сложнее

uuid1 же повторяться не будут ( https://hg.python.org/cpython/file/3.6/Lib/uuid.py#l529 )

а кешировать всё равно придётся, с любыми идшниками

допустим, у нас есть некие операции, которые выполняются каждый день и по итогам этого куда-нибудь пишется лог, а в базу нужно записать состояние операции и ссылку на этот лог

допустим, у нас 100 тысяч клиентов и по каждому 1 раз в день добавляется запись в таблицу

Google
Alexander
18.11.2016
16:59:45
ограничения на таблицу 32Тб, как бы много, но рано или поздно это израсходуется

значит, мы будем писать, допустим, каждый год в свою таблицу

и будет меньше ошибок, если идшники повторяться не будут)

Artem
18.11.2016
17:10:17
.
18.11.2016
17:13:13
гайс, через {% url %} можно 2 аргумента передать?

arisu
18.11.2016
17:13:33
Да хоть десять

Хоть аллаха передавай

Лишь бы сматчилось с какой-то урлой

Alexander
18.11.2016
17:16:49
для этого имеется партицирование
оно вроде только недавно научилось работатьс разными серверами

ничего не имею против партиционирования в PostgreSQL 9.5 и выше, впрочем

но вот с UUID это всё можно реализовать вполне стандартным способом, это удобно

uuid1 ещё чем интересен - из него можно восстановить дату создания и понять, к какой таблице или серверу делать запрос

как-нибудь так http://stackoverflow.com/questions/3795554/extract-the-time-from-a-uuid-v1-in-python

Artem
18.11.2016
17:36:01
ничего не имею против партиционирования в PostgreSQL 9.5 и выше, впрочем
У постгреса намного раньше имеется эта поддержка

Alexander
18.11.2016
18:34:29
я особо не вчитывался, но видел что-то такое https://www.depesz.com/2015/04/02/waiting-for-9-5-allow-foreign-tables-to-participate-in-inheritance/

вот это решение с UUID1 мне нравится

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

Panda
19.11.2016
10:53:37
HALP

Точнее я так и не могу понять на что оно ругается

Igor
19.11.2016
10:56:17
Точнее я так и не могу понять на что оно ругается
эээ, какое-то ограничение в бд не отрабатывает?

Google
Igor
19.11.2016
10:56:41
конфиг в базе посмотри к comments.comment_article_id

Nikita
19.11.2016
11:14:30
Ты видимо пытаешься сохранить в бд объект Comments и не указываешь у него comment_article

Воспользуйся дебагером

У тебя ошибка

Comments_article

В контроллере

Comment_article в моделе

Буква s

Panda
19.11.2016
11:19:32
оууу

спасибо

?

Alexander
19.11.2016
11:20:08
class Meta обычно пишут в конце после определения элементов модели

Panda
19.11.2016
11:20:21
да я знаю

но помойму так четабельней)

Alexander
19.11.2016
11:20:44
ещё ради +1 нет смысла дёргать всё из СУБД

Panda
19.11.2016
11:21:28
ну я только осваиваю... не знаю как без этого...

Nikita
19.11.2016
11:21:32
Укажи related_name в поле comment_article

Alexander
19.11.2016
11:30:51
ну я только осваиваю... не знаю как без этого...
ну, как-нибудь так Article.objects.select_for_update().filter(pk=article_id).update(article_likes=F('article_likes') + 1)

но помойму так четабельней)
лучше в одном стиле всё делать)

открывая твой код, у другого программиста не должно складываться ощущения, что этот код писал не он

Google
Panda
19.11.2016
11:38:53
Оке)

Daniil
19.11.2016
11:39:27
Хай, гайс

def logout(request): logout(request) return redirect('/') url(r'^logout$', views.logout, name="logout"),

url(r'^$', views.index, name='test'),

RuntimeError at /logout maximum recursion depth exceeded

Из-за чего это?

b0g3r
19.11.2016
11:41:33
где-то рекурсия

вот тут:

def logout(request): logout(request)

создаешь функцию, которая вызывает себя же

в официальной доке это обойдено вот так:

def logout_view(request): logout(request)

Daniil
19.11.2016
11:43:23
Черт, не заметил, спасибо)

b0g3r
19.11.2016
11:44:23
ещё можно явно делать from django.contrib import auth а в коде auth.logout(request), но, наверное, не стоит

b0g3r
19.11.2016
11:47:16
всё равно две функции с одинаковым названием в коде - нехорошо, в любой момент можно запутаться и написать logout() вместо auth.logout()

Alexander
19.11.2016
11:48:45
это блокировка

но, кстати, лайки, наверное, лучше вообще в redis'е хранить

а не в PostgreSQL

Google
Alexander
19.11.2016
11:53:06
тот код, который был в оригинале, не предусматривает разные ситуации, когда кто-то там что-то одновременно хочет записать (лайкнуть)

Daniil
19.11.2016
11:53:17
Как делают у модели User поля email тек unique?

Не лезть же в саму модель User?

Alexander
19.11.2016
11:53:40
User переопределяют на свою кастомизированную

T3ch
19.11.2016
11:53:41
а разве update одного поля не атомарная оперция?

Alexander
19.11.2016
11:54:39
а разве update одного поля не атомарная оперция?
ну, вот в примере выше там человек получает состояние строки таблицы на какой-то момент времени, потом дописывает туда 1 и сохраняет, за это время могло что угодно измениться и те данные уже не актуальны

T3ch
19.11.2016
11:55:47
это я понимаю. но запрос же превратится в '...likes = likes + 1...' разве при этом может возникнуть race?

Alexander
19.11.2016
11:57:16
я эти рекомендации брал отсюда https://habrahabr.ru/post/252563/

T3ch
19.11.2016
11:57:47
о, благодарю, сейчас ознакомлюсь

.
19.11.2016
12:02:26
Гайс, хочу переопределить немного удаление объектов из админки, это возможно?

В доке чет нашел только про добавлении действий в админку

Daniil
19.11.2016
12:03:32
А что будет с полями, которые содержат идентичные значения, после добавления unique=true?

Которые ранее созданы были без этого тека

T3ch
19.11.2016
12:03:57
на уровне миграции - ничего

т.е. на момент применения нового свойства все будет хорошо

Alexander
19.11.2016
12:05:24
select_for_update() ставит блокировку на строчку FOR UPDATE https://www.postgresql.org/docs/current/static/explicit-locking.html

Страница 60 из 1273