Piszę aplikację Django, która wykonuje różne funkcje, w tym wstawianie lub aktualizowanie nowych rekordów do bazy danych za pośrednictwem adresu URL.Jak zaktualizować członków obiektu za pomocą dyktatury?
Tak więc niektóre aplikacje wewnętrzne wysyłają żądanie na przykład do /import/?a=1&b=2&c=3
. W widoku chcę utworzyć nowy obiekt, foo = Foo()
i ustawić element foo
na dane w słowniku request.GET.
Oto, co robię teraz:
- wniosek przesłany do
/import/?a=1&b=2&c=3
- View tworzy nowy obiekt:
foo = Foo()
- Obiekt jest aktualizowane danymi.
Oto co mam do tej pory:
foo.a = request['a']
foo.b = request['b']
foo.c = request['c']
Oczywiście jest to żmudne i podatne na błędy. Dane w adresie URL mają dokładnie taką samą nazwę jak elementy obiektu, więc jest to proste mapowanie 1 do 1.
Idealnie, chciałbym zrobić w stanie zrobić coś takiego:
foo = Foo()
foo.update(request.GET)
lub coś w tym rodzaju.
Dzięki!
Rozwiązanie przedstawione przez mrówki robi to, co chcesz, ale jak ty obsługę walidacji i typ konwersji? Albo nie budzą obaw (trudno mi w to uwierzyć). –
Nie martwią się. Jest to wykorzystywane całkowicie w domu, gdzie dane są wstawiane do jednej bazy danych (z walidacją), a następnie (tutaj) wstawiane do innej. –