@pydjango
Django

Полезная информация и правила: https://github.com/amureki/django_faq Вакансии и резюме: @django_jobs Пофлудить идём сюда: @django_flood Статистика чата: combot.org/chat/-1001063854692

1741 members

Архив канала @pydjango 19 ноября 2016 г.

10:53:37 ДП
10:53:52 ДП
User 135467237
почему?
10:54:24 ДП
User 135467237
Точнее я так и не могу понять на что оно ругается
10:56:17 ДП
User 112052450
User 135467237
Точнее я так и не могу понять на что оно ругается
эээ, какое-то ограничение в бд не отрабатывает?
10:56:41 ДП
User 112052450
конфиг в базе посмотри к comments.comment_article_id
11:14:30 ДП
User 154558711
Ты видимо пытаешься сохранить в бд объект Comments и не указываешь у него comment_article
11:16:20 ДП
11:18:02 ДП
User 154558711
Воспользуйся дебагером
11:18:30 ДП
User 154558711
У тебя ошибка
11:18:53 ДП
User 154558711
Comments_article
11:19:05 ДП
User 154558711
В контроллере
11:19:20 ДП
User 154558711
Comment_article в моделе
11:19:27 ДП
User 154558711
Буква s
11:19:32 ДП
11:19:35 ДП
User 135467237
спасибо
11:20:01 ДП
11:20:08 ДП
User 2895769
class Meta обычно пишут в конце после определения элементов модели
11:20:21 ДП
User 135467237
да я знаю
11:20:32 ДП
User 135467237
но помойму так четабельней)
11:20:44 ДП
User 2895769
ещё ради +1 нет смысла дёргать всё из СУБД
11:21:28 ДП
User 135467237
ну я только осваиваю... не знаю как без этого...
11:21:32 ДП
User 154558711
Укажи related_name в поле comment_article
11:30:51 ДП
User 2895769
User 135467237
ну я только осваиваю... не знаю как без этого...
ну, как-нибудь так Article.objects.select_for_update().filter(pk=article_id).update(article_likes=F('article_likes') + 1)
11:31:42 ДП
User 2895769
User 135467237
но помойму так четабельней)
лучше в одном стиле всё делать)
11:32:33 ДП
User 2895769
открывая твой код, у другого программиста не должно складываться ощущения, что этот код писал не он
11:38:53 ДП
11:39:27 ДП
User 282727527
Хай, гайс
11:39:51 ДП
User 282727527
def logout(request):
    logout(request)
    return redirect('/')

url(r'^logout$', views.logout, name="logout"),
11:39:55 ДП
User 282727527
url(r'^$', views.index, name='test'),
11:40:09 ДП
User 282727527
RuntimeError at /logout

maximum recursion depth exceeded
11:40:18 ДП
User 282727527
Из-за чего это?
11:41:33 ДП
User 211270198
где-то рекурсия
11:41:44 ДП
User 211270198
вот тут:
11:42:06 ДП
User 211270198
def logout(request):
  logout(request)
11:42:14 ДП
User 211270198
создаешь функцию, которая вызывает себя же
11:43:02 ДП
User 211270198
в официальной доке это обойдено вот так:
11:43:07 ДП
User 211270198
def logout_view(request):
    logout(request)
11:43:23 ДП
User 282727527
Черт, не заметил, спасибо)
11:44:23 ДП
User 211270198
ещё можно явно делать 
from django.contrib import auth
а в коде auth.logout(request), но, наверное, не стоит
11:46:27 ДП
User 88127526
User 211270198
ещё можно явно делать 
from django.contrib import auth
а в коде auth.logout(request), но, наверное, не стоит
почему не стоит?
11:47:16 ДП
User 211270198
всё равно две функции с одинаковым названием в коде - нехорошо, в любой момент можно запутаться и написать logout() вместо auth.logout()
11:47:52 ДП
User 61401061
User 2895769
ну, как-нибудь так Article.objects.select_for_update().filter(pk=article_id).update(article_likes=F('article_likes') + 1)
а зачем тут select_for_update?
11:48:45 ДП
User 2895769
это блокировка
11:49:43 ДП
User 2895769
но, кстати, лайки, наверное, лучше вообще в redis'е хранить
11:49:50 ДП
User 2895769
а не в PostgreSQL
11:53:06 ДП
User 2895769
тот код, который был в оригинале, не предусматривает разные ситуации, когда кто-то там что-то одновременно хочет записать (лайкнуть)
11:53:17 ДП
User 282727527
Как делают у модели User поля email тек unique?
11:53:25 ДП
User 282727527
Не лезть же в саму модель User?
11:53:40 ДП
User 2895769
User переопределяют на свою кастомизированную
11:53:41 ДП
User 61401061
а разве update одного поля не атомарная оперция?
11:54:39 ДП
User 2895769
User 61401061
а разве update одного поля не атомарная оперция?
ну, вот в примере выше там человек получает состояние строки таблицы на какой-то момент времени, потом дописывает туда 1 и сохраняет, за это время могло что угодно измениться и те данные уже не актуальны
11:55:47 ДП
User 61401061
это я понимаю. но запрос же превратится в '...likes = likes + 1...' разве при этом может возникнуть race?
11:57:16 ДП
User 2895769
я эти рекомендации брал отсюда https://habrahabr.ru/post/252563/
habrahabr.ru/post/252563
Всем привет! Про Django модели уже много статей на хабре, но хочется поделится с общественностью, как эффективно использовать их и не наступать на грабли.
11:57:47 ДП
User 61401061
о, благодарю, сейчас ознакомлюсь
12:02:26 ПП
User 82569033
Гайс, хочу переопределить немного удаление объектов из админки, это возможно?
12:03:20 ПП
User 82569033
В доке чет нашел только про добавлении действий в админку
12:03:32 ПП
User 282727527
А что будет с полями, которые содержат идентичные значения, после добавления unique=true?
12:03:42 ПП
User 282727527
Которые ранее созданы были без этого тека
12:03:57 ПП
User 61401061
на уровне миграции - ничего
12:04:16 ПП
User 61401061
т.е. на момент применения нового свойства все будет хорошо
12:04:59 ПП
User 41866402
User 82569033
Гайс, хочу переопределить немного удаление объектов из админки, это возможно?
exclude = ('some_field')
12:05:24 ПП
User 2895769
select_for_update() ставит блокировку на строчку FOR UPDATE https://www.postgresql.org/docs/current/static/explicit-locking.html
12:05:38 ПП
User 2895769
то есть другие транзакции ничего с этой строчкой сделать не смогут
12:05:47 ПП
User 2895769
если они будут там одновременно выполняться
12:06:09 ПП
User 2895769
они будут ждать, пока данная транзакция не отпустит эту строчку
12:06:22 ПП
User 282727527
Вопрос: я заметил, что встроенные формы Django для создания пользователя работают только  с оригинальной моделью User, а у меня кастомизированная, что мне делать?
12:06:31 ПП
User 82569033
User 41866402
exclude = ('some_field')
так это вроде я просто убираю(добавляю) поля
12:06:51 ПП
User 282727527
User 282727527
Вопрос: я заметил, что встроенные формы Django для создания пользователя работают только  с оригинальной моделью User, а у меня кастомизированная, что мне делать?
class CustomUser(models.Model):
    email = models.EmailField('email address', blank=True, unique=True)
12:08:45 ПП
User 105952369
User 282727527
Вопрос: я заметил, что встроенные формы Django для создания пользователя работают только  с оригинальной моделью User, а у меня кастомизированная, что мне делать?
Наследуй от abstractuser
12:09:00 ПП
User 82569033
я хочу, чтобы при удалении объекта через админку у меня крутился счетчик
12:09:50 ПП
User 282727527
User 105952369
Наследуй от abstractuser
Разве User не наследуется от abstractuser, то есть я получу все методы, что и в abstractuser, в кастомизированной модели?
12:12:17 ПП
User 282727527
Все, заметил)
12:12:21 ПП
12:13:22 ПП
User 100243492
User 282727527
Разве User не наследуется от abstractuser, то есть я получу все методы, что и в abstractuser, в кастомизированной модели?
Ну и в настройкках укажи AUTH_USER_MODEL = 'users.User'
12:14:39 ПП
User 282727527
Это зачем? Я хочу просто наследоваться от User.
Напишу class CustomUser(User):
    email = models.EmailField('email address', blank=True, unique=True)
12:16:15 ПП
User 282727527
И, вроде, еще можно переопределить менеджер
objects = UserManager()
12:16:34 ПП
User 100243492
А, ты вон для каких целей
12:17:06 ПП
User 282727527
Ну, меня не устаривает, что мыло неуникальное
12:17:16 ПП
User 282727527
Советуют сделать кастомизированную модельку
12:17:30 ПП
User 282727527
Заодно добавлю менеджер, чтобы забыть про User
12:19:15 ПП
User 282727527
Мне не разрешают переопределить email
12:19:16 ПП
User 282727527
Local field 'email' in class 'CustomUser' clashes with field of the same name from base class 'User'.
12:19:48 ПП
User 282727527
Делать второе поле с другим именем или есть решение?
12:24:14 ПП
User 12323717
народ, кто что использует all_auth или django-social-login?
12:27:13 ПП
User 2895769
User 282727527
Ну, меня не устаривает, что мыло неуникальное
такое реально
12:27:27 ПП
User 2895769
1 удалил ящик, другой потом его зарегистрировал
12:27:33 ПП
User 2895769
такое может быть, если свой домен
12:28:21 ПП
User 2895769
и, кстати, у 1 пользователя может быть вообще куча ящиков, просто 1 из них основной (и он сам может не помнить, какой именно)
12:28:45 ПП
User 2895769
почта или телефон как логин - не лучшая идея
12:30:42 ПП
User 282727527
Это для регистрации
12:30:59 ПП
User 282727527
Чтобы заполнить данные о пользователе, а  логине я еще не беспокоюсь
12:56:14 ПП
12:57:33 ПП
12:57:34 ПП
12:57:42 ПП
User 282727527
В чем проблема может быть?
01:02:33 ПП
User 228292075
В базе нету поля username  у этой таблицы.
01:03:24 ПП
User 282727527
У abstractuser есть это поле, я от него наследовался
01:03:46 ПП
User 154558711
А ты в settings указал какую модель использовать для авторизации?
01:04:02 ПП
User 228292075
В CustomUser не указана таблица.
01:04:19 ПП
User 282727527
AUTH_USER_MODEL = 'client.CustomUser'
01:04:26 ПП
User 282727527
User 154558711
А ты в settings указал какую модель использовать для авторизации?
AUTH_USER_MODEL = 'client.CustomUser'
01:04:45 ПП
User 154558711
Ну вот с этого и начинаются проблемы)
01:05:02 ПП
User 282727527
User 228292075
В CustomUser не указана таблица.
В смысле?
01:05:11 ПП
User 154558711
AbstractUser - абстрактный класс
01:05:13 ПП
User 282727527
User 154558711
Ну вот с этого и начинаются проблемы)
В смысле?
01:05:35 ПП
User 282727527
User 154558711
AbstractUser - абстрактный класс
Ок. И что?
01:07:17 ПП
User 154558711
Зайди в класс джанговского User
01:07:35 ПП
User 154558711
Там есть метакласс
01:07:55 ПП
User 282727527
User 154558711
Там есть метакласс
Что он делает?
01:08:49 ПП
User 154558711
Я пытался разобраться но бросил
01:09:00 ПП
User 154558711
Попробуй скопировать в свой класс
01:09:37 ПП
User 154558711
Я недавно тоже искал как переопределить поведение User
01:09:59 ПП
User 154558711
В итоге наследовался от AbstractBaseUser
01:11:55 ПП
User 378433
Разве так не написано в документации?
01:11:59 ПП
User 378433
Что от него и надо
01:12:59 ПП
User 282727527
Где? Дайте линк
01:22:14 ПП
User 282727527
Ок, а если мне нужны поля, которые в AbstractUser, то мне двойное наследование нужно сделать?
01:22:14 ПП
User 282727527
В итоге наследовался от AbstractBaseUser
01:22:15 ПП
User 282727527
Разве так не написано в документации?
01:23:12 ПП
User 282727527
AbstractBaseUser для полного переопределения модели, а AbstractUser для добавления полей и методов, что там
01:25:38 ПП
User 154558711
Да, мне не нужны были поля
01:25:49 ПП
User 154558711
Просто при наследовании моделей
01:26:26 ПП
User 154558711
Неявно создается связь один к одному
01:26:56 ПП
User 154558711
И по идее username у твоей модели должен браться из abstractuser
01:27:10 ПП
User 154558711
Но эта модель абстрактная
01:28:09 ПП
User 154558711
Ты посмотрел джанговского юзера?
01:28:13 ПП
User 44072265
User 154558711
Неявно создается связь один к одному
не ври, это только, если ты модель наследуешь, а для абстрактной модели такого не происходит
01:28:45 ПП
User 228292075
@python_beginners сюда пиши.
01:28:59 ПП
01:51:07 ПП
01:52:43 ПП
User 231821027
Ребята не подскажите, как textaria прикрутить? :(
01:53:56 ПП
User 282727527
У тебя есть форма, у формы есть поля, у полей есть атрибуты и свойства, названия атрибутов найдешь и свойств найдешь в документации
01:58:56 ПП
User 231821027
Спасибо за подсказку)), изучаю инфу)
02:01:14 ПП
User 282727527
Не за что🤓
02:18:08 ПП
05:53:23 ПП
User 2895769
а как в Django правильнее всего реализовывать ограничения на уровне СУБД (constraints)? например, я хочу добавить CHECK(fk1 IS NULL != fk2 IS NULL)
05:54:58 ПП
User 231821027
фуууууууууух)
05:55:53 ПП
User 2895769
допустим, у меня есть 2 FK и должен быть заполнен только 1 из них, если ни 1 или оба - это ошибка
05:57:59 ПП
User 2895769
например, у нас есть модель Account, которая связана с  User и Organization, и может быть связана только с кем-то одним из них
05:58:45 ПП
User 2895769
я могу это контроллировать в save(), но хочу сделать на уровне СУБД
06:11:17 ПП
User 44072265
User 2895769
я могу это контроллировать в save(), но хочу сделать на уровне СУБД
пиши триггер
06:11:55 ПП
User 44072265
но сейчас стараются это в бизнес логику перенести, а не в бд писать
06:12:43 ПП
User 2895769
а зачем триггер?
06:12:50 ПП
User 2895769
CHECK работает отлично тут
06:13:19 ПП
User 2895769
User 44072265
но сейчас стараются это в бизнес логику перенести, а не в бд писать
в БД не только Django может захотеть писать
06:13:40 ПП
User 61043901
хм, кто то тут сравнивал Jinja2 с Django темплейтами?
http://blog.sendwithus.com/python-templating-performance-showdown-django-vs-jinja/
blog.sendwithus.com/python-templating-performance-showdown-django-vs-jinja
A few weeks ago, we announced that we would be upgrading our templating language from Django to Jinja and discussed some of the reasons for doing so. At the time we promised a follow-up with more depth on the technical details. Today we're here to fulfill that promise. As mentioned previously, th
06:13:41 ПП
User 2895769
Django просто управляет базой
06:14:02 ПП
User 2895769
User 2895769
а зачем триггер?
http://stackoverflow.com/questions/18409952/trigger-vs-check-constraint
stackoverflow.com/questions/18409952/trigger-vs-check-constraint
I want to add a field-level validation on a table. There is a field named "account_number" and this field should always pass a "luhn" check. I've found a function called "luhn_verify" that seems to
06:15:03 ПП
User 2895769
просто раз уж у меня schema разруливает Django, то и CHECK'и тоже в Django нужно как-то описывать)
06:15:40 ПП
User 61043901
а, так вот, действительно лучше перейти на Jinja2?
синтаксис темплейтов у них одинаковый...
юзал и то и то. (Jinja2 не в Django проекте был у меня.)
06:15:42 ПП
User 107485588
триггеры зло
06:15:44 ПП
User 107485588
адское
06:15:45 ПП
User 2895769
> хм, кто то тут сравнивал Jinja2 с Django темплейтами?
Jinja2 круче)
06:15:46 ПП
User 44072265
User 2895769
в БД не только Django может захотеть писать
хм, не подумал, но и в ТЗ это не было указано)
06:16:21 ПП
User 2895769
вопрос не в том, как это сделать на стороне СУБД (я знаю), а в том, как это Django лучше всего объяснить
06:17:23 ПП
User 2895769
думал, может есть app, который позволяет описывать эти CHECK'и в Meta модели
06:34:51 ПП
User 183302322
просто интересно для какой задачи это надо (я имею виду реальную задачу, а не 2 FK и давайте их запустим в космос)
06:48:27 ПП
User 2895769
User 2895769
например, у нас есть модель Account, которая связана с  User и Organization, и может быть связана только с кем-то одним из них
так я написал
06:49:53 ПП
User 2895769
счёт, который относится одновременно и к юзеру и к компании - это аномалия
07:52:54 ПП
User 282727527
Кто как делает авторизацию, давая выбор заполнения либо юзернейма, либо почты?
07:54:50 ПП
User 170841817
User 57296486
ну а вообще многие верстальщики часто знают многие шаблонизаторы в том числе и джанговские(ибо и твиг с них содран и вообще как-бы это им на пользу знать шаблонизаторы)
А как же с seo быть ?
08:33:17 ПП
User 57296486
User 170841817
А как же с seo быть ?
а в чем проблема с seo?
09:02:56 ПП
User 61043901
User 109322233
заготовка: https://github.com/Seedstars/django-react-redux-base
github.com/Seedstars/django-react-redux-base
django-react-redux-base - Seedstars Labs Base Django React Redux Project
такое же только для ангуляра есть?
09:37:01 ПП
User 109322233
User 61043901
такое же только для ангуляра есть?
не попадалось
09:42:30 ПП
User 61043901
жаль :с
10:28:27 ПП
User 2895769
пользуясь случаем агитирую в пользу Aurelia вместо Angular'а)
10:28:50 ПП
User 2895769
(а этот React я скоро хейтить начну, почему его так пиарят, это же хрень какая-то)
10:44:30 ПП
User 200200555
User 2895769
(а этот React я скоро хейтить начну, почему его так пиарят, это же хрень какая-то)
Ну зачем так жёстко то
10:50:04 ПП
User 61043901
User 2895769
пользуясь случаем агитирую в пользу Aurelia вместо Angular'а)
окей, какие приемущества?
10:50:54 ПП
User 2895769
User 200200555
Ну зачем так жёстко то
ну, он же не полноценный фреймворк, он компонент, скорее
10:51:25 ПП
User 2895769
User 61043901
окей, какие приемущества?
https://habrahabr.ru/post/276649/
habrahabr.ru/post/276649
Не так давно в мире web-разработки произошло важное событие — вышла бета Angular 2. И уже можно строить предположения о том, как он будет выглядеть после...
10:55:51 ПП
User 2895769
просто мне кажется, что люди, которые пиарят и используют React не до конца осознают, что он покрывает лишь часть задач, в итоге всё остальное пользователь делает так, как ему нравится и там нет никаких правил, соглашений и прочего такого и в самом React'е некоторые вещи неконкретные