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

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

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

25 ответов

19 просмотров

Если речь идёт о только одной вложенности, то вот: 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- Автор вопроса

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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта