Mam formularz z jednym wejściem na e-mail i dwoma przyciskami przesyłania, aby zapisać się i wypisać się z newslettera:
<form action="" method="post">
{{ form_newsletter }}
<input type="submit" name="newsletter_sub" value="Subscribe" />
<input type="submit" name="newsletter_unsub" value="Unsubscribe" />
</form>
Mam też klasę:
class NewsletterForm(forms.ModelForm):
class Meta:
model = Newsletter
fields = ('email',)
Muszę napisać własną metodę clean_email i wiedzieć, za pomocą którego przycisku został przesłany formularz. Ale wartości przycisków przesyłania nie ma w self.cleaned_data
słowniku. Czy w inny sposób mogę uzyskać wartości przycisków?
clean
nie jest to właściwe miejsce do wykonywania logiki na poziomie modelu. Służy specjalnie do czyszczenia formularza i znajdowania dowolnych,ValidationError
które obejmują wiele danych wejściowych. Odpowiedź Svena jest bardziej we właściwym kierunku, ale nadal niekoniecznie najlepsza odpowiedźNa przykład:
źródło
def post(self, request, *args, **kwargs)
.Możesz też zrobić w ten sposób,
KOD
źródło
To stare pytanie, niemniej jednak miałem ten sam problem i znalazłem rozwiązanie, które działa dla mnie: napisałem MultiRedirectMixin.
źródło
jeden adres URL do tego samego widoku! tak!
urls.py
views.py
źródło