save() w django-generic-confirmation
21 stycznia, 2010
Za pomocą tytułowej aplikacji można łatwo stworzyć swego rodzaju autoryzację treści - odwiedzający dodaje treść, która pojawia się dopiero po potwierdzeniu przez moderatora lub po potwierdzeniu autentyczności podanego adresu email.
Skorzystałem u siebie z tego rozwiązania, bo nie widzę sensu wyważać otwartych drzwi, tym bardziej, że aplikacja wygląda na dopracowaną, a, co równie ważne - dodanie aplikacji nie wymaga praktycznie żadnych zmian w kodzie - pomijając przypadek opisany poniżej.
Podczas dodawania aplikacji do odpowiednich formularzy napotkałem drobny problem, mianowicie potrzebowałem w formularzu nadpisać metodę save(), aby dodać nowe przetworzone dane do modelu. Problem polega na tym, że metoda save() zmodyfikowanego formularza (bo nie korzystamy z ModelForm, ale ichniejszego DeferredForm) wywoływana jest w momencie tworzenia zastępczego obiektu, a w dokumentacji nie ma wzmianki o tym, co zrobić w przypadku, kiedy chcę przetworzyć dane w momencie faktycznego dodawania obiektu do bazy.