@python_beginnersЭта группа больше не существует

Страница 1217 из 1885
Romka
30.01.2017
22:01:04
Всем привет

Как правильно организовать модель закладок в книге? Есть такая модель, но с ней очень много проблем, во views.py из метода get_bookmarks нужно передать на страницу - название, автора, картинку и id книги(это лежит в модели Book) class UserBookmark(models.Model): user_id = models.IntegerField() book_id = models.IntegerField() page_id = models.IntegerField()

Django

Denis
30.01.2017
22:02:52
models.ForeignKey пробовал?

Google
Romka
30.01.2017
22:03:20
я не знаю как его сюда прикрутить

Denis
30.01.2017
22:03:35
models.ForeignKey('Book')?

User, видимо, туда же

Romka
30.01.2017
22:04:36
ок, сейчас попробую

models.ForeignKey('Book')?
а что можно сделать с page_id? К одной книге может быть много страниц

Denis
30.01.2017
22:15:06
Page есть в модели или это просто число?

Romka
30.01.2017
22:15:16
просто число

Denis
30.01.2017
22:15:22
Тогда оставь

Я бы его тогда назвал page_number, но не суть

Romka
30.01.2017
22:16:40
А как мне удобно его использовать? У меня на странице с закладками юзера должно показывать книгу и все закладки к ней

я когда делаю UserBookmark.objects.filter(user_id=request.user.id) то мне дает их тучу, и я хз как его вывести

как передать в render()*

Denis
30.01.2017
22:18:36
Сделай .all(), будет список

Google
Denis
30.01.2017
22:18:43
Его передай в шаблон

Romka
30.01.2017
22:19:23
мне нужно для конкретного пользователя

в таблице лежат все закладки всех пользователей, поэтому я через .filter()

Denis
30.01.2017
22:20:07
.filter(...).all()

Romka
30.01.2017
22:20:51
сейчас скину скрин как это должно быть на странице

Denis
30.01.2017
22:22:10
На странице что-то вроде {% for bookmark in books %} {{ bookmark.book.name }} {{ bookmark.page_id }} {% endfor %}

Denis
30.01.2017
22:25:21
Ну тогда во вьюшке после получения закладок сгруппируй по книгам

Romka
30.01.2017
22:26:56
вот это я и не знаю как сделать

Denis
30.01.2017
22:27:39
Создаешь словарь {книга: список закладок} и циклом заполняешь

Romka
30.01.2017
22:34:15
спасибо, попробую

Создаешь словарь {книга: список закладок} и циклом заполняешь
Такс, а как получить номера страниц? {<Book: Twilight>: <QuerySet [<UserBookmark: UserBookmark object>]>, <Book: Murder Is No Joke>: <QuerySet [<UserBookmark: UserBookmark object>, <UserBookmark: UserBookmark object>, <UserBookmark: UserBookmark object>, <UserBookmark: UserBookmark object>, <UserBookmark: UserBookmark object>, <UserBookmark: UserBookmark object>]>}Это переменная result

Denis
30.01.2017
22:52:39
Они в закладках хранятся

Romka
30.01.2017
22:52:48
Когда делаю {% for book in result %} и потом {{book.title}}

то норм

как их пройти циклом?

Denis
30.01.2017
22:53:29
А потом for bookmark in что-то, синтаксис не помню

Romka
30.01.2017
22:53:59
и я не помню

Denis
30.01.2017
22:56:52
http://stackoverflow.com/questions/1275735/how-to-access-dictionary-element-in-django-template

Romka
30.01.2017
23:02:48
не понял

Google
Denis
30.01.2017
23:04:17
Второй ответ

53r63rn4r
30.01.2017
23:05:22
Бля, как отследить директорию с которого файл вызывается?

os.path.dirname(__file__)

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

Чо, никто не знает?

Denis
30.01.2017
23:09:47
sys.argv[0]

53r63rn4r
30.01.2017
23:11:03
Да, точно, часа два с этим писал назад, спасибо

Romka
30.01.2017
23:16:45
{% for book, page in result.items%} {{page.page_id}} - ничего не выводит {% for book, page in result.items%} {{page}} - выводит -

Denis
30.01.2017
23:17:25
for book, bookmarks in result.items for bookmark in bookmarks

Romka
30.01.2017
23:21:08
for book, bookmarks in result.items for bookmark in bookmarks
Ооочень огромное спасибо!

53r63rn4r
30.01.2017
23:23:00
А с mock никто не работал?

С патчем

Denis
30.01.2017
23:23:15
unittest.mock который?

53r63rn4r
30.01.2017
23:23:17
Да

Denis
30.01.2017
23:23:21
Ну я работал

53r63rn4r
30.01.2017
23:23:53
У меня в тестс директории лежит файлик тест, лежит и файл __инит__(пустой)

class ParserTestCase(unittest.TestCase): @mock.patch('tests') def setUp(self): self.name = 'test_config' self.p = Parser(self.name)

Google
53r63rn4r
30.01.2017
23:24:21
AttributeError: <module 'tests' from 'D:\\Python\\OpenSourceProjects\\somescripts\\tests\\__init__.py'> does not have the attribute ''

Denis
30.01.2017
23:24:34
patch для сетапа?

Зачем?

53r63rn4r
30.01.2017
23:24:54
А как тогда мне директорию указать, у меня там с этим траблы

Denis
30.01.2017
23:25:11
Где указать?

53r63rn4r
30.01.2017
23:25:18
Если не патчу, то

open(os.path.dirname(sys.argv[0]) + '/' + self.config, 'r').close() FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Program Files (x86)\\JetBrains\\PyCharm 171.2014.23\\helpers\\pycharm/test_config.json'

Оно вызывает с под пучарма

И пытается прилепить то что я хочу

Ы

Admin
ERROR: S client not available

Denis
30.01.2017
23:26:07
Мб это не в сетапе, а в тесте должно быть?

53r63rn4r
30.01.2017
23:27:40
Не-а, в сетапе я инициализирую тестируемый класс и туда же передаю сразу путь к конфигу(пыаюсь его распарсить)

Denis
30.01.2017
23:27:56
А что такое tests?

53r63rn4r
30.01.2017
23:27:59
И тот вариант с sys.argv[0] работает мутно для меня в данном случае

Ну, тесты

Denis
30.01.2017
23:28:34
Обычно делают mock.patch('unit.name', some_object)

И он добавляет параметр в функцию

53r63rn4r
30.01.2017
23:30:44
А что за юнит нэйм и некий обьект?

Denis
30.01.2017
23:31:11
Суть патча в том, что он заменяет некоторый объект в некотором юните

Google
Denis
30.01.2017
23:31:29
Либо на Mock, либо на то, что ты ему передашь

53r63rn4r
30.01.2017
23:32:24
Хм...

Т.е. код не менять, а мок пихать путь относительный тестов, да?

Сука, а я пытаюсь код под тесты подстроить, ло

Denis
30.01.2017
23:33:07
Я вообще не понял, при чем тут путь

53r63rn4r
30.01.2017
23:33:30
Ну, есть скрипт, лежащий отдельно, в модуле

Есть тот скрипт, который вызывает этот модуль и просто передает в него имя файла-конфига

Конфиг рядом, вотъ

Но что-то я не могу гибко построить

Denis
30.01.2017
23:34:11
Ну ты из тестов импортишь его и передаешь что надо

53r63rn4r
30.01.2017
23:34:33
Ну я в тестах его импорчу, но у меня тесты крашатся из-за несоответсвия путей

Denis
30.01.2017
23:34:50
Как насчет кинуть их в ту же папку?

53r63rn4r
30.01.2017
23:35:03
Не хочу

Тогда оно будет не гибко

Denis
30.01.2017
23:35:27
Создаешь в своем проекте папку tests, все тесты туда

53r63rn4r
30.01.2017
23:35:56
Я так и сделал

Denis
30.01.2017
23:36:58
Вот из моего старого кода #!/usr/bin/python3 import unittest import os this_dir = os.path.join(os.path.dirname(__file__), 'tests') tests = unittest.defaultTestLoader.discover(start_dir=this_dir, pattern='*_test.py') base = unittest.TestResult() tests.run(base)

53r63rn4r
30.01.2017
23:39:02
А, ты так, а я думал тесты с прям тестс вызывать, но всё равно это не то

В папке тестс лежит тестовый конфиг типа, т.е. я должен ж оттолкнуться как-то от того "ГДЕ Я", так же?

Denis
30.01.2017
23:40:15
Наверно

53r63rn4r
30.01.2017
23:40:59
Вот и я хз как решить эту ебаную проблему с путями

Или сделать более менее и прикрутить аргпарс?

Это решит проблему с консоли

Страница 1217 из 1885

Эта группа больше не существует Эта группа больше не существует