Форум сайта python.su
0
Здравствуйте. Есть шаблон с таблицей. Мне нужно во view обработать выбранную строку таблицы. Можно, конечно, передать id этой строки, но не хочется делать лишний запрос к базе, когда нужные данные уже в таблице. Можно ли передать нужную строку в виде словаря? Типа
one_row={"id":123,"name":"колесо","price":321}
<a href="{% url 'edit_row' one_row %}"><span class="btn btn-default glyphicon glyphicon-pencil"></span></a>
def edit_row(request,one_row): <обрабатываем, получаем результат> return render(request, 'my_table.html', {"rez": rez})
urlpatterns = [ path('program/edit/<dict:one_row>', views.edit_row, name='edit_row'),]
Офлайн
568
1) Вопрос не вполне понятен. Что значит “передать строку в виде словаря”? Стрку можно передать как строку . Вероятно вы имели в виду запись базы данных, но тут возникает вопрос 2
2) Собственно GET запрос это и есть словарь по структуре, свойствам и поведению. Смотрите:
https://www.linux.org.ru/forum/general/15883443?cid=15883457
{'cid': 15883457} # это то же самое
id | Имя города | Население
1 | Москва | 20 000 000
1254 | Сосновка | 1058
< a href='http://my_site/page?city_id=1254&population=1058'>
Отредактировано FishHook (Сен. 4, 2020 10:51:57)
Офлайн
0
спасибо, что ответили! Я совсем начинающий, прошел пока только пару уроков (https://developer.mozilla.org и https://tutorial.djangogirls.org), решил сделать простенький сайт (в приложении).
Справа sidebar с формой, которая отображается при передаче id>=0 (сейчас там -1), слева форма-заголовок с выбранным полем для сортировки и поиском по нему и полем строки поиска. Ниже-таблица с данными. Для каждой записи 2 псевдокнопки (я выше писал).
Идея-не создавая класс формы (как я понял, ее нельзя впихнуть в sidebar, а мне это надо, потому что при создании или редактировании записи приходится сравнивать с уже имеющимися строками таблицы), получить данные о нужной записи+данные из формы-заголовка, чтобы после перерисовывания страницы у меня не сбросился сделанный выбор.
Сама таблица рисуется в отдельной функции, в которую передаются выбранное поле+строка поиска, а функция возвращает словарь со строками таблицы. Вся страница создается
return render(request, 'artikuls/art_tab.html', {"arts": rez, "dop": dop_rez})
Прикреплённый файлы:
pic.png (53,9 KБ)
Офлайн
568
Я честно говоря запутался что именно вы хотите сделать. Давайте по-порядку. Вопрос первый. Зачем вам нужна форма слева, там где написано “тут будет форма”, что эта форма должна передавать на сервер?
Офлайн
0
там будет редактироваться имеющаяся запись или создаваться новая. На скриншоте была нажата кнопка “+” для создания новой записи (таблица не изменилась, потому что эта кнопка-в форме, из которой request.GET может получить данные о фильтрации таблицы)
Прикреплённый файлы:
pic1.png (53,4 KБ)
Офлайн
568
mokynis
Ну так и ОК, создание или изменение данных это POST запрос, ваши параметры фильтрации хранятся в ссылке, и таким образом при передаче POST запроса по той же ссылке, вы не измените и не сбросите фильтры. То есть пока вы не делаете ГЕТ запросов ваши фильтры не изменяются.
Офлайн
0
1) данные о фильтрации хранятся в форме-заголовке, а кнопка, посылающая POST-запрос-в форме sidebar'а. Это разные формы
2) при сознании формы для ввода новой записи нажимается кнопка из формы-заголовка и, поэтому таблица перерисовывается согласно условий фильтрации (они хранятся в этой форме).
3) при попытке открыть в форме sidebar'а реальную строку таблицы, я не могу передать в функцию, выбирающую содержимое этой таблицы, условия, с которыми она была на момент нажатия кнопки, отфильтрована. И у меня она отображается вообще без фильтрации. Картинку могу приложить, просто сейчас там все закомментировано, не работает
Офлайн
0
вот картинки. Открываю вторую строку и получаю эту строку сбоку и совершенно не ту информацию в таблице
Прикреплённый файлы:
pic2.png (40,6 KБ)
Офлайн
0
картинки отправляются только по одной
Отредактировано mokynis (Сен. 4, 2020 14:08:13)
Прикреплённый файлы:
pic3.png (53,7 KБ)
Офлайн
568
mokynisобе формы генерируются вашим бэкендом, то есть джангой, засуньте в action обеих форм одинаковую ссылку
данные о фильтрации хранятся в форме-заголовке, а кнопка, посылающая POST-запрос-в форме sidebar'а. Это разные формы
Офлайн