@pydjango
Django

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

1741 members

Архив канала @pydjango 30 января 2017 г.

08:51:18 ДП
User 94962112
всем привет
08:51:44 ДП
User 94962112
мне надо создать сайт по курсам и не пойму как сделать лучше наследование
08:53:42 ДП
User 94962112
получается курс (описание курса и разделы уроков) - раздел урока (в нем уроки  с дом задинями) - урок(текс, видео И так далее)
08:59:33 ДП
User 94962112
с чего  все должно наследоваться
09:02:08 ДП
09:02:24 ДП
User 48374918
скорее не наследовано и связано
09:03:27 ДП
User 48374918
course
lesson => foregnkey(course)
homework => foreignkey(lesson)
09:03:28 ДП
User 107485588
наследование тут не причем, тебе нужно проработать связи между таблицами базы (модельками)
09:03:57 ДП
User 107485588
можешь про нормальные формы баз данных почитать
09:27:13 ДП
User 94962112
http://joxi.ru/krDqzj4HljOpmp
09:27:21 ДП
User 94962112
как сделать ?
09:27:33 ДП
User 94962112
не могу понять с чего начать
09:33:18 ДП
User 194990550
https://docs.djangoproject.com/en/1.10/ref/models/fields/#foreignkey
09:33:29 ДП
User 194990550
https://docs.djangoproject.com/en/1.10/intro/tutorial02/ а еще лучше отсюда
09:50:46 ДП
User 120578100
User 194990550
https://docs.djangoproject.com/en/1.10/intro/tutorial02/ а еще лучше отсюда
+
10:25:10 ДП
User 21118953
Использовать Django + react js это нормально или извращение?
10:26:32 ДП
User 194990550
Вчера обсуждали это:)
10:26:34 ДП
User 101775819
Реакт - извращение:) А вообще нормально.
10:26:51 ДП
User 226624052
Почему это реакт извращение?
10:27:08 ДП
User 226624052
User 21118953
Использовать Django + react js это нормально или извращение?
Джанго-рест, уж тогда
10:27:30 ДП
User 226624052
Реакт общается с рестовым вроде, не?
10:27:48 ДП
User 226624052
А вот под реакт это же должна быть установлена нода рядом с джанго, я так понимаю?
10:27:52 ДП
User 21118953
Да... я и имел ввиду Django, djangorestframework и тд
10:28:03 ДП
User 21118953
Ага... должна
10:28:11 ДП
User 21118953
Зоопарк получаеться на сервере
10:28:20 ДП
User 226624052
Т.е. джанго выполняет прямой бэк, а реакт рендерится, через ноду, так?
10:28:28 ДП
10:28:35 ДП
User 226624052
и общается с реактом чисто по апи
10:28:40 ДП
10:28:42 ДП
User 194990550
Зачем ?:) 
Просто Билд через nginx раздавать не получится?
10:28:46 ДП
User 12323717
а если django + vue.js
10:28:48 ДП
User 226624052
Ну, тогда не понял: где реакт извращение?
10:28:54 ДП
User 12323717
по идее можно избежать ноды
10:29:00 ДП
User 226624052
User 12323717
а если django + vue.js
И такое можно
10:29:09 ДП
User 226624052
Не(я просто в ЖСе не силен)
10:29:21 ДП
User 194990550
Можно еще темплейт джангой отдавать:)
10:29:22 ДП
User 226624052
и не знаю как оно там отработать должно под капотом
10:29:28 ДП
User 194990550
Ну это извращение, имхо
10:29:35 ДП
User 12323717
User 226624052
и не знаю как оно там отработать должно под капотом
вроде как-это не очень
10:29:52 ДП
User 226624052
А толку, если там реакт использует виртуальный дум
10:30:39 ДП
User 226624052
У меня вон на проекте был ангулар(первый вроде, хз, или второй), то я не особо понял как оно работает
10:30:44 ДП
User 194990550
Я про индекс тимплейт :)
10:31:00 ДП
User 194990550
Ну имхо лучше через nginx
10:31:10 ДП
User 226624052
Чото там какие-то ватчеры еще что-то
10:35:11 ДП
User 120578100
По поводу ноды на серве - вопрос религиозный... Можно статику билдить и на дев машине при помощи того же вебпака... тогда нода не нужна на проде
10:35:12 ДП
User 101775819
Добрые люди в этом чате посоветовали vue.js, а еще знакомые говорили за крутость реакта. Ну, вот я и сравнивал пару дней. Реакт влечёт больше оверхеда, но немного более универсален. Если проект не сложный, то vue будет проще использовать.
10:35:35 ДП
User 101775819
User 226624052
Ну, тогда не понял: где реакт извращение?
Это к этому.
10:37:34 ДП
User 120578100
Если же воркфлоу предполагает компиляцию всего на стороне сервака, то да, нода нужна, но опять таки 2 решения, либо в коллект статик добавлять билд своего реакт/ангуляр/вьюжс приложения, либо запускать какой нить экспресс для фронта
10:38:18 ДП
User 120578100
Но джанга онли для апи - ИМХО, излишне
10:38:40 ДП
User 120578100
Потому как юзаться будет только роутинг по сути
10:39:29 ДП
User 226624052
Вот и я не понимаю: как работает плотно фронт с бэком
10:39:52 ДП
User 120578100
В данном случае проще обойтись каким нить микрофреймворком, либо restless + ОРМ, но последнюю связку отдельно не юзал
10:39:54 ДП
User 12323717
есть предположение, что роуты на клиенте используются
10:39:57 ДП
User 12323717
вместо серверных
10:40:00 ДП
User 120578100
User 226624052
Вот и я не понимаю: как работает плотно фронт с бэком
json
10:40:08 ДП
User 12323717
и по серверной части только api дергается
10:40:33 ДП
User 12323717
если у кого-то есть практики подобные
10:40:36 ДП
User 12323717
было бы интересно послушать
10:40:46 ДП
User 226624052
Да, очень интересно
10:41:16 ДП
User 120578100
Роутинг зависит только от настроек серва...
10:42:25 ДП
User 226624052
А поподробнее? Ну, типа, берем нгинкс, бросаем апликуху джанги(возьмем просто за пример) и кидаем роут туда, а оттуда разделяем, так?
10:42:51 ДП
User 226624052
Или я не правильно понимаю?
10:45:26 ДП
User 120578100
User 226624052
А поподробнее? Ну, типа, берем нгинкс, бросаем апликуху джанги(возьмем просто за пример) и кидаем роут туда, а оттуда разделяем, так?
Тип того...на
location /
прописываем рут статики(react, vuejs, angular, etc) и если запускается при помощи нодовского сервака, например express вешаем апстримм на него, а для
location /api/v1/
апстрим на бек приложения
10:46:02 ДП
User 226624052
Да, понял, вроде бы
10:46:33 ДП
User 226624052
Потом (реакт,ангулар, вуе, ембер) там работает отдельно и обращается к серверу по апи - есл нужно что-то достать с базы, например или впихнуть
10:46:50 ДП
10:47:06 ДП
User 120578100
но есть момент... админ панель
10:47:19 ДП
User 226624052
Ану-ка
10:47:26 ДП
User 120578100
Либо она чисто на беке, либо на фронте...
10:48:01 ДП
User 120578100
В любом случае alc нужно писать
10:48:03 ДП
User 226624052
А две нельзя?  Хотя толку, ну тогда на фронте лучше размещать, имхо
10:48:12 ДП
10:48:31 ДП
User 194990550
На фронте свою писать надо:)
10:48:31 ДП
User 120578100
access level control
10:48:49 ДП
User 194990550
вот кстати, хз как защищать API (
10:49:03 ДП
User 226624052
Ага, понял
10:49:14 ДП
User 226624052
А как ты защитишь апи?
10:49:21 ДП
User 226624052
Оно общедоступное, по сути, не?
10:49:32 ДП
User 120578100
Что бы у тебя любой кому не поподя не послал бы post какой нить на /api/v1 и не грохнул ничего
10:49:52 ДП
User 226624052
А, или даже так: они же оба на локалхосте, не?
10:50:00 ДП
User 226624052
И слшать можно только локалхост
10:50:04 ДП
User 120578100
вот кстати, хз как защищать API (
10:50:04 ДП
User 120578100
А как ты защитишь апи?
10:50:11 ДП
User 120578100
В любом случае alc нужно писать
10:50:17 ДП
User 226624052
Хотя тогда возникает проблема масштабирования
10:50:29 ДП
User 226624052
Я бы каким-то хешем защищался, наверное
10:50:36 ДП
User 226624052
Токеном, во
10:50:56 ДП
User 226624052
Бэк принимал бы только запросы с токенов-приложений
10:51:06 ДП
User 101775819
User 120578100
В любом случае alc нужно писать
То есть надо заморочиться с правами доступа и группами?
10:51:10 ДП
User 120578100
User 226624052
И слшать можно только локалхост
Не выйдет... будет ошибка Access Control Origin
10:51:16 ДП
10:51:23 ДП
User 120578100
User 101775819
То есть надо заморочиться с правами доступа и группами?
А как же)))
10:51:25 ДП
User 226624052
А токеном, как тебе, как тебе?
10:51:59 ДП
User 120578100
А где ты собираешься формировать этот токен?
10:52:25 ДП
User 226624052
На бэке, отсылая его фронту, чтобы тот знал какой токен крепить, чтобы запрос обработался
10:52:33 ДП
User 120578100
Такие штуки обычно в head запроса пихают
10:53:16 ДП
User 226624052
Ну или заранее согласованно, хз
10:53:43 ДП
User 226624052
Ну это я уже костыли какие-то думаю(основываясь на личных наблюдениях)
10:53:51 ДП
User 226624052
Но токены у них там есть
10:53:55 ДП
User 226624052
Аппиды всякие
10:54:06 ДП
User 120578100
User 226624052
На бэке, отсылая его фронту, чтобы тот знал какой токен крепить, чтобы запрос обработался
Ну как бы паттерн верный, но токен это просто некий ключ... по которому мы понимаем и сравниваем, что это за пользователь и какие у него права
10:54:23 ДП
User 226624052
Ага, понял
10:54:44 ДП
User 226624052
Всё, понял, бля, ты классный, теперь я понял как оно под капотом
10:54:47 ДП
User 194990550
Такое норм для всяких дэшбордов. Когда у тебя вначале ток форма входа и больше ничего, после заполнения поподаешь уже в свою аппу с дэшбордом:)
10:54:54 ДП
User 120578100
Но можно на уровне сессии
10:55:31 ДП
User 226624052
Пихая туда coockie?
10:55:32 ДП
User 120578100
при авторизации получать ключ сессии и писать в head
10:56:02 ДП
User 120578100
У юзера да, хранить в куках
10:56:17 ДП
User 226624052
а у фронта в хеде, понял
10:56:47 ДП
User 226624052
Просто бывают такие подковырчатые вопросы на собеседах
10:56:51 ДП
User 120578100
не у фронта а у реквеста
10:57:16 ДП
User 120578100
на фронте как раз и писать в куки
10:58:07 ДП
User 226624052
Ну да, я понял тебя
10:58:15 ДП
User 120578100
И в любом случае проверять активную сессию и пользователя прежде чем выполнить запрос, даже обыкновенный get
10:58:17 ДП
User 101775819
А как сделать alc по-человечески?
10:58:41 ДП
User 120578100
Потому как можно сервак попросить просто показать какие нить конфедициальные данные
10:58:49 ДП
10:59:04 ДП
User 226624052
Как у меня щас)
10:59:18 ДП
User 120578100
User 101775819
А как сделать alc по-человечески?
Это зависит от проекта и самих ролей доступа
10:59:19 ДП
User 226624052
Не прод, а сплошной бэкдор
10:59:38 ДП
User 226624052
С включеным дебагом
10:59:40 ДП
11:01:28 ДП
User 101775819
В джанге, например, можно проверять в темплейтах или лучше декоратором перед самой вьюхой
11:01:54 ДП
User 226624052
Но мы шас за плотный фррнт с бэком
11:01:57 ДП
User 101775819
Просто систематичности хотелось бы в этом процессе.
11:02:10 ДП
User 101775819
Так вот я и не пойму как это всё в кучу связать
11:02:13 ДП
User 226624052
Ну напиши свой декоратор
11:02:54 ДП
User 211270198
User 120578100
Что бы у тебя любой кому не поподя не послал бы post какой нить на /api/v1 и не грохнул ничего
Так авторизация же
11:03:17 ДП
User 211270198
GET запросы общедоступны, остальные по авторизации с токеном
11:03:42 ДП
User 226624052
И тогда @логинреквайред
11:03:55 ДП
User 101775819
User 211270198
GET запросы общедоступны, остальные по авторизации с токеном
Не все GET должны быть всегда доступны.
11:03:57 ДП
User 226624052
Продолжая мюсль богера
11:04:05 ДП
User 120578100
User 211270198
GET запросы общедоступны, остальные по авторизации с токеном
Например список юзеров со всеми полями и правами доступа?
11:04:08 ДП
User 211270198
User 101775819
Не все GET должны быть всегда доступны.
Не спорю, я про общий случай
11:04:28 ДП
User 101775819
Если особенно публичное АПИ, то канеш.
11:04:28 ДП
User 211270198
Да и не все остальные для всех групп должны быть)
11:04:39 ДП
User 211270198
DEL к примеру)
11:04:57 ДП
User 226624052
Ну, апи может быть и публичным и некоторые методы приватными
11:06:16 ДП
User 226624052
Окей, а как контроллить такой проект с плотным фронтом? Это надо фронту давать список методов и доку по ним
11:06:54 ДП
User 226624052
И писать чтоле паблик/приват
11:07:05 ДП
User 120578100
Ну валидация на фронте в любом случа нужна
11:07:24 ДП
User 120578100
Лан... нада поработать)))
11:07:32 ДП
User 226624052
Давай, я тож
11:07:33 ДП
User 158695346
User 226624052
Окей, а как контроллить такой проект с плотным фронтом? Это надо фронту давать список методов и доку по ним
и не часто менять апи, а то лучи поноса от фронтенд-разработчиков гарантированы.
11:07:55 ДП
User 226624052
Паша, го во флудилку
11:10:26 ДП
User 211270198
User 226624052
Окей, а как контроллить такой проект с плотным фронтом? Это надо фронту давать список методов и доку по ним
Да, документировать апи
11:10:39 ДП
User 211270198
И версионность во все щели
11:11:04 ДП
User 101775819
User 226624052
Окей, а как контроллить такой проект с плотным фронтом? Это надо фронту давать список методов и доку по ним
Или писать всё самому😄
11:11:22 ДП
User 101775819
Хотя всё равно дока нужна. Запутаешься со временем.
11:11:25 ДП
User 226624052
Мы тут @pyflood
11:11:36 ДП
11:14:55 ДП
User 194990550
https://github.com/hellpirat/django-cookiecutter-boilerplate я тут кстати шаблончик собрал себе для будущих проектов:) на основе cookiecutter, многое у django-cookiecutter подглядел :) 
Может кому пригодиться, да и попробует. 
Не уверен насчет настроек docker надо бы их потестить по лучше и посмотреть. В нем я пока еще не очень силен, не давно ток с ним стал знаком :) . Может есть какие-нибудь рекомендации:)
github.com/hellpirat/django-cookiecutter-boilerplate
Contribute to django-cookiecutter-boilerplate development by creating an account on GitHub.
11:38:12 ДП
User 246279572
Всем привет!
11:39:55 ДП
User 246279572
У меня в проекте есть несколько приложений, и одно из них, так сказать, устарело и более не нужно, и хотелось бы его скрыть, но не удалять. Как этого достичь? Т.е. не удалять сам код, а просто, возможно по урлам выскакивала 404 например, или как такое в джанге делается?
11:41:09 ДП
User 226624052
выпиливаешь просто из юрл
11:41:18 ДП
User 246279572
отключить приложение чтоле
11:41:22 ДП
User 226624052
доступ к этой приложухе и в инсталед аппс
11:41:27 ДП
11:42:00 ДП
User 246279572
кхм, ща попробуем-с
11:48:51 ДП
User 158695346
Если не нужно, то и не храни его. Смело удаляй, кому надо - из истории коммитов поднимет.
12:13:28 ПП
User 246279572
у меня ещё есть приложение как главное приложение, в котором перечисляются все остальные приложения — я для этого завёл модельку, в которой вручную вписываю название, описание, название приложения, вручную урл в виде test_app:index и тому подобное... пришлось добавить туда поле Показывать приложение? булево
12:14:07 ПП
User 246279572
у меня по этому, кстати, тоже вопрос есть, может можно как-то главную страницу, на которой будут перечислены приложухи с названием, описанием, сделать?
12:14:41 ПП
User 158695346
User 246279572
у меня по этому, кстати, тоже вопрос есть, может можно как-то главную страницу, на которой будут перечислены приложухи с названием, описанием, сделать?
обычный ListView, не?
12:15:03 ПП
User 246279572
кхм, у меня всё по методам, а не class based
12:15:45 ПП
User 246279572
или это не сложно запилить?
12:15:55 ПП
User 158695346
три строки кода. :)
12:16:03 ПП
User 158695346
плюс хтмл
12:16:12 ПП
User 246279572
просто я придерживаюсь мнения, что если структура одна в приложениях, то лучше её придерживаться
12:16:23 ПП
User 246279572
везде одной
12:16:46 ПП
User 246279572
кхм, надо будет почитать эту тему
12:17:48 ПП
User 246279572
а то например, я изменю урл индекса, и мне придётся ещё менять его и там... а хотелось бы автоматики
12:18:40 ПП
User 246279572
в идеале бы вообще хотелось, чтобы, мол, при startapp, задавались 2 кастомных доп.вопроса, типа для названия и описания приложухи, а потом автоматом создавалась запись в модельке
12:19:04 ПП
User 158695346
namespace в корневом urls.py, name='index' в урлах приложениё
12:19:09 ПП
User 246279572
я не знаю, можно ли такое как то сделать?
12:19:32 ПП
User 246279572
а, ну да, он не меняется же обычно
12:20:08 ПП
User 194990550
http://mmcardle.github.io/django_builder/#/home типа такого?:D
mmcardle.github.io/django_builder
Django Builder is a website to create and build boiler plate code for Django apps. The output is python files including models.py admin.py views.py and urls.py and template files. The output can be downloaded as a tar file.
12:20:22 ПП
User 194990550
интересно, юзает кто-нибудь
12:21:58 ПП
User 158695346
User 194990550
интересно, юзает кто-нибудь
> Added some new fields from Django 1.1
забавная запись в истории проекта.
12:24:32 ПП
User 246279572
User 194990550
http://mmcardle.github.io/django_builder/#/home типа такого?:D
mmcardle.github.io/django_builder
Django Builder is a website to create and build boiler plate code for Django apps. The output is python files including models.py admin.py views.py and urls.py and template files. The output can be downloaded as a tar file.
т.е. он автоматом генерит код для моделей?
12:25:01 ПП
User 194990550
хз, я так потыкался на сайте, типа того походу
wysiwig для модели:D
12:27:40 ПП
User 246279572
я имел в виду, что есть главное приложение в виде главной страницы сайта, на которой перечисляются все остальные приложения;

а как они перечисляются? для этого есть моделька с полями name, app_name, description, link, is_show например, в которой можно задать название, описание, ссылку на индекс приложения, поставить флаг отображать его на главной странице или нет
12:28:26 ПП
User 194990550
напомнило генераторы в рельсах :) 

я тебя понял:)
12:28:45 ПП
User 194990550
startapp generate title:charfield description:textfield
12:28:46 ПП
12:29:45 ПП
User 246279572
и вот сделать что-то типа, чтобы после добавления нового приложения, не задавать всё это вручную в админке, а например в консоли када вбил startapp, он помимо вопроса как приложение называется, задавало твои кастомные вопросы, на основе которых будет создана запись в этой модельке, или не создана, если я например ничего не ввёл, а просто энтер прожал
12:31:51 ПП
User 246279572
User 194990550
startapp generate title:charfield description:textfield
не пробовал, надо посмотреть
12:32:21 ПП
User 246279572
я про генераторы в рельсах уже забыл :(
12:33:03 ПП
User 126848884
А был же какой-то проект, который пытался воссоздать генераторы рельсов для Django.
12:33:41 ПП
User 126848884
https://github.com/modocache/django-generate-scaffold вот, кажется.
github.com/modocache/django-generate-scaffold
django-generate-scaffold - Generate a Django model, views, URLconf, and templates using a single command.
01:05:14 ПП
User 124340438
ребят, подскажите плиз. Раньше делал так, теперь даже нагуглить не могу(
Есть моделька с несколькими полями, как сделать так, чтобы в админке, на странице с объектами модели, было отображение не только заголовка, но и еще описания? Чтобы было два поля допустим, заголовок и описание например.
01:05:31 ПП
01:06:32 ПП
User 226624052
def __repr__
01:07:05 ПП
User 194990550
list_display = ['title', 'descritption']
01:08:20 ПП
User 124340438
User 194990550
list_display = ['title', 'descritption']
вот так в admin.py, не работает

class ProjectAdmin(admin.ModelAdmin):
    list_display = ['title', 'description']
01:08:22 ПП
User 194990550
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    list_display = ['title', 'category', 'active']
01:09:50 ПП
User 124340438
User 194990550
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    list_display = ['title', 'category', 'active']
во, с декратором заработало, спасибо
01:12:07 ПП
User 254082535
Вариант извращённого использования репра в модели:
@classmethod
    def __repr__(cls):
        return '%s/%s' % (__package__, str(cls.__name__).lower()), cls._meta.verbose_name_plural.capitalize()
01:12:42 ПП
User 254082535
Использовалось для передачи ссылки в шаблон и заголовка на странице)
01:15:47 ПП
User 194990550
Кто как отправку сообщение реализует? Имею ввиду сам сервер почты.
01:16:09 ПП
User 254082535
smtp google
01:16:58 ПП
User 254082535
Ну, классика. Доверенное приложение, ключ, ключ в сеттингс.
01:17:46 ПП
User 194990550
Клиент хочет, чтобы к нему сообщения формы контакты приходило письмо к нему на gmail
01:18:13 ПП
User 254082535
Да. И для этого тоже.
01:23:43 ПП
User 107485588
User 194990550
Кто как отправку сообщение реализует? Имею ввиду сам сервер почты.
можешь еще sendgrid глянуть
04:37:29 ПП
User 128333406
Такой вопрос. Мне нужны raw sql, они большие, там джоин по 5 таблиц. Во view пихать глупо, поделитесь опытов, как вы организовывали свои raw sql в проекте. Как разбивали на файлы, все в один в рамках проекта или делали модуль и еще как-то дробили?
04:38:26 ПП
User 128333406
знаю, что делают часто utils, но мне кажется, что это не подходящее место для SQL
04:43:41 ПП
User 254082535
А почему просто это не делать python way - модули и пакеты?
04:53:52 ПП
User 128333406
так я и хочу разбить это на модуль или на пакет, поэтому и спрашиваю, как делали, как более удобно
04:54:03 ПП
User 128333406
как обычно делают
04:55:16 ПП
User 128333406
архитектуру проекта лучше спрашивать у опытных или смотреть другие хорошие проекты. Сам я там костылей наделаю, старшего товарища нет у меня
05:42:41 ПП
User 107485588
Имхо где хранить еще и от текущей структуры проекта зависит
05:43:18 ПП
User 254082535
Как и любой импорт. Смотри, что и куда ты будешь импортировать. Есть смысл, наверное, разделить квери по моделям откуда тащишь. А вообще, это уже скорее вопросы предпочтений.
05:45:40 ПП
User 128333406
у меня запросы к моделям конкретным не относятся. У меня запрос возвращает набор, собранный из 5 разных таблиц.
05:46:18 ПП
User 128333406
это нужно все в пределах одного аппа. Другим аппам в проекте эти запросы не нужны
05:46:24 ПП
User 107485588
Менеджер тебе не подходит?
05:46:54 ПП
User 191376311
User 567937
http://whitenoise.evans.io/en/stable/
Спасибо
05:46:54 ПП
User 107485588
Ну тогда my_app/queries
05:47:09 ПП
User 128333406
manager.raw()? или про что ты?
05:47:26 ПП
User 128333406
или в менеджер модели?
05:47:51 ПП
05:47:57 ПП
05:48:34 ПП
User 107485588
Аа вижу, 5 разных таблиц
05:48:51 ПП
User 128333406
ну, как я понимаю, менеджер в модели должен обслуживать конкретную модель. А когда у меня смест, то это не подходит
05:49:42 ПП
User 128333406
да, наверное сделаю пакет queries и там сделаю модули
09:56:40 ПП
User 191376311
Как правильно организовать модель закладок в книге?
Есть такая модель, но с ней очень много проблем, во views.py из метода get_bookmarks нужно передать на страницу - название, автора, картинку и id книги(это лежит в модели Book) 
class UserBookmark(models.Model):
    user_id = models.IntegerField()
    book_id = models.IntegerField()
    page_id = models.IntegerField()
11:45:53 ПП
User 120578100
User 191376311
Как правильно организовать модель закладок в книге?
Есть такая модель, но с ней очень много проблем, во views.py из метода get_bookmarks нужно передать на страницу - название, автора, картинку и id книги(это лежит в модели Book) 
class UserBookmark(models.Model):
    user_id = models.IntegerField()
    book_id = models.IntegerField()
    page_id = models.IntegerField()
Тебе советовали уже почитать про ForeignKey
11:46:38 ПП
User 191376311
Уже разобрался
11:47:44 ПП
User 191376311
Там больше проблема не с ним была, я не мог правильно достать страницы
11:49:53 ПП
User 191376311
Мне не привыкать, по доке я не понял как его сделать, уже мне нормально пояснили и я понял
11:53:36 ПП
User 191376311
Я программирую на Питоне ток 3 месяца, этот проект делаю уже 2 недели, перед тем как его делать прошёл ток джангогёрлс. Вот поэтому всё через жопу 😁
11:55:14 ПП
User 191376311
И поэтому пристаю с тупыми вопросами, простите если уж слишком я тупой)
11:55:14 ПП
User 120578100
User 191376311
Я программирую на Питоне ток 3 месяца, этот проект делаю уже 2 недели, перед тем как его делать прошёл ток джангогёрлс. Вот поэтому всё через жопу 😁
Прям как в том анекдоте:
- Я за рулём первый год, думал проскочу
- Я за рулём 20 лет, у меня хрен проскочишь
11:55:30 ПП
User 120578100
Ты не тупой, ты ленивый
11:56:49 ПП
User 120578100
И как вся молодёжь хочешь всё и сразу
11:58:30 ПП
User 191376311
Если бы у меня был целый свободный день и я мог сидеть ток на Джанго, я бы был ленивым, а так у меня школа - тренировки(с 9:00 до 20:00), и да, я хочу сразу пилить проект) поэтому на доки я немного забиваю и это плохо😞
11:59:04 ПП
User 191376311
Это я признаю
11:59:21 ПП
User 120578100
А тут же в питоне не только Int, bool, str, тут ещё словари, списки, кортежи, множества...