Wpis z mikrobloga

Hej pytanko do #python #django #restapi i ogólnie #webdev , #webdesign

Przykładowo mamy jakiś model np samochody i konkretne części do tych samochodów jeśli chcę na stronie pokazać listę samochodów i w detailu mieć możliwość wyświetlenie dodania edycji i usunięcia części dostępnych na stronie to które rozwiązanie jest poprawne/lepsze?

1) samochody/ - lista samochodów ;
samochody// - opis samochodu plus dodany "atrybut" modelu części samochodowych z listą (przykładowo 'części samochodowe" : [{"id" :.. ,} {'id': ...}] - na tym url możliwość dodania edycji i usunięcia cześci samochodowych

2) samochody/ - lista samochodów ;
samochody// - opis samochodu , 'cześci samochodowe" - hyperlink=samochody//czescisamochodowe/ ,
samochody//czesci
samochodowe/ i w tym url części samochodowych lista części samochodowych z możliwością dodawania edycji usuwania części z bazy danych

3) samochody/ - lista samochodów ;
samochody// - opis samochodu , 'cześci samochodowe" - hyperlink=samochody//czescisamochodowe/ ,
samochody//czesci
samochodowe/ - lista (tylko metoda get dostępna),
samochody//dodajczescisamochodowe/ - (post)dodawanie cześci
samochody//edycjaczescisamochodowe/ - (put) edycja czesci
samochody//usunczescisamochodowe/ - (delete) usuwanie czesci

*myśle jeszcze nad
4) samochody/ - lista samochodów ;
samochody// - opis samochodu , 'cześci samochodowe" - hyperlink=samochody//czescisamochodowe/ ,
samochody//czesci
samochodowe/ - lista (tylko metoda get dostępna),
samochody//czescisamochodowe/dodaj/ - (post) dodawanie nowych czesci
samochody//czesci
samochodowe// - edycja lub usuwanie czesci

- tylko nie wiem jak to w viewsetcie zrobić (w Django-rest-framework) sensie mam podstawy serializer samochody pozniej jako nowa funkcje z decoratorem action robię czesci_samochodowe a jak odwołać się do tych czesci samochodowych żęby uworzyć kolejna fukcje lub dojśc do detaila cześci jeszcze nigdzie się nie dowiedziałem tego

wszystko to chce zrobić przez viewsets w Django-Rest-Frameworku - za każde rady, hejty będe bardzo wdzięczny ;)

#python #webdev #naukaprogramowania #programowanie #programista15k #pomocy
  • 7
via Wykop Mobilny (Android)
  • 0
@GlenPL: ok kumam czyli w samochody//czesci_samochodowe/ wyświetlać lista przy metodzie get a przy post dodawać nowa

A czy ktoś ogarnia Django Rest Framework i wie jak sie dostać do takiego detaila powiązanego z pierworodnym serializerem decoratorem action?
@mozeskomentuje: nie piszę w DRF, ale chyba potrzebujesz tu 2 viewsety - jeden wpinasz na route samochody a drugi na samochody//czesci_samochodowe i masz wtedy dostęp elegancki do wszystkiego, viewset sam ogarnie list i get dla czescisamochodowe

gdzies tam się jeszcze ogranicza queryset żeby były w nim tylko części z tego samochodu którego car_pk dostałeś, doczytaj, będzie to na 100% w tutorialu dowolnym


pytanie brzmi jakbyś próbował zbytnio kombinować :) wszystko powinno
via Wykop Mobilny (Android)
  • 0
@Tank1991: kumam ale jak ustawić wg dostępnosc tych stron dla części samochodowych w takich przypadkach, bo to by trzeba ustawić detail do detaila i nie wiem i narazie nie moge znaleźć jakiejś podpowiedzi do tego przypadku
@mozeskomentuje: hmm:

PUT samochody/ => tworzenie nowego obiektu
PATCH samochody// = >modyfikacja
GET samochody// => wyciagniencie pojedynczej instancji
GET samochody/ => lista instancji zdefiniowana na polu queryset viewsa
(nie pamietam zawsze tylko czy PUT czy POST)

jak wepniesz modelviewset do routera a router do urli to wszystkie te metody powinienes miec z automatu dostepne. (chyba nawet jak wejdziesz z przegladarki na samochody/
to bedziesz mial w gui opcje wykonania posta -
@Tank1991: 99% przypadków POST tworzy zasób, PUT go modyfikuje.
Druga najważniejsza różnica, to PUT jest idempotentny (tj wielokrotne wywołanie niczego nie zmieni /ew poza updatedAt, jeżeli wymuszasz/)