170 похожих чатов

Ребят, всем привет. Есть такой вопрос: допустим, у меня есть

model1. У нее есть foreign key mode2. Мне нужно сделать структуру, чтоб на можно было получать доступ вот так:
model1/model1-id/model2/model2-id
Как это во вьюхе на DRF?
То есть на model1/model1-id/ я хочу получать информацию об этом объекте и все model2, относящийся к этому объекту

25 ответов

6 просмотров

Если речь идёт о только одной вложенности, то вот: Model2Serializer: class Meta: ... Model1Serializer: model2 = Model2Serializer(many=True) class Meta: ... Т.е. каждый путь нужно описывать явно. Если же речь о том, что вложенность может иметь неограниченную глубину, то нужно смотреть в сторону GraphQL

А зачем все это так делать, если нужно запрашивать 1 ресурс? Например /<model1_slug>, который будет содержать полную модель1 и зависимые к ней модели2

DD- Автор вопроса

Да, у меня так и сделано, но мне нужно для model2 put/delete реализовать

Тогда почему ты хочешь обновлять один ресурс, через другой?

DD- Автор вопроса

я первый раз пишу по сути фронт, и вот там я вывожу список model1. Когда нажимаешь на model1 - открывается список model2, которые относятся к этому model1. Я хочу сделать возможность удалять и изменять model2. Получается можно сделать отдельный вью для model2? И притягиватб просто model2/id?

Чтобы изменить model2 у тебя должна быть точка model2/id/ Ты открыл GET model1/, он дал тебе в том числе список id детей model2. Шлёшь DELETE model2/123/ и удаляешь объект model2 с id 123

Просто это странный дизайн реста, есть по нему много статей, советую перед писанием кода, его спроектировать

DD- Автор вопроса

Да, я просто не всё знаю, но проект нужно сделать до дедлайна, поэтому и делаю, и узнаю новое))

Дедлайн всегда можно просрать, ради правильности реализации

DD- Автор вопроса

Учебный дедлайн, не коммерческий проект

DD- Автор вопроса

Спасибо большое за совет, кстати. То есть получается проще отдельную точку сделать?

DD- Автор вопроса

Чем зря парится и что то выдумывать?

Смотря какая логика. Обычно всегда пишут документацию к проекту, потом по ней реализуют всё

DD- Автор вопроса

По сути айди на самом деле уникальные для каждой model2, не знаю, зачем я запарился

Да, есть уже готовые паттерны дизайна реста

https://dzone.com/articles/a-look-at-rest-api-design-patterns https://stoplight.io/blog/api-design-patterns-for-rest-web-services/

DD- Автор вопроса

А что посоветуешь по генерации pdf? Я видел, что офф дока джанги предлагает ReportLab, мне нужно просто собрать данные с нескольких моделек и отдать пдф пользователю. Как будет лучше сделать?

DD- Автор вопроса

Спасибо большое!

генерации pdf? Речь о документации или о чём? Вероятно @Nire1 говорил о свагере

Есть два варианта популярных- рендерить хтмл и конвертить в пдф или собирать пдф с помощью инструмента чисто для создания пдф файлов

Не обязательно, мы щас в гитбуке на стадии проектирования с фронтендером согласуем апишки. Но можно и в сваггере

DD- Автор вопроса

Первый вариант, видимо, проще?

Второй вариант более точен и кастомизирован конкретно под форматы пдф, в первом варианте легче намного, но фишек пдф меньше можно заюзать

DD- Автор вопроса

Спасибо большое!

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
доброго времени. db, dw и прочие исполняются при трансляции или при выполнении программы?
lutayyy
10
Почему никто не подсказал, что можно объявить свои типы данных, в которых меньше полей, чем в отданном джейсоне, и добавлять их по необходимости?
Strange Rabbit
10
Хтось використовував Vapor на Windows?
Jaroshevskii
15
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Карта сайта