Zdravím, lidi, mám takovouto potíž:
Stavem state_id řídím ve formsetech viditelnost checkboxu update_it,
ale checkboxy po selhané validaci zmizí kvůli problémům s typem state_id.
DETAILNĚJI:
class NejakejFormPouzivanyVeFormsetu(forms.Form):
update_it = forms.BooleanField(required=False)
state = forms.CharField(required=False, disabled=True)
state_id = forms.IntegerField(widget=forms.widgets.HiddenInput,
required=False)
update_id je checkbox, který zobrazuju v každém formuláři toho formsetu
state_id/state souvisí s CHOICES=.., state_id=0,1,2, kdežto state je totéž
textově: NEW, PARTIAL, COMPLETED
state_id má skrýt ten checkbox, jestliže není state==0/NEW
state_id jsem přidal jako hidden field, aby mi přežilo failed-validation
JENŽE:
po form-get je state_id Integer (protože ho tak nastavuju, shodně s
.IntegerField)
po form-post-failed-validation je Char (v cleaned_data je samozřejmě
správně Integer)
Takže test v templatě:
form.state_id.value == 0
mi po selhané validaci selže - a checkboxy zmizí ze všech řádků, i z těch
NEW, kde mají být zobrazeny
VYŘEŠIL JSEM TO JEDINĚ TAK,
že jsem state_id změnil na CharField a taky tu konstantu předávám templatě
jako str(konstanta)
Přijde mi to ale takové protisrstné,
Když 0,1,2 jsou Integer CHOICES.
Nemáte nějaký lepší nápad, jak to dělat?
- buď nechat rozdílný typ pro GET a pro POST, a nějak upravit ten výraz v
templatě form.state_id.value==0, aby si poradil s oběma typy
- nebo ještě lépe: jak předat templatě jednotný typ Integer v obou
případech?
--
--
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs
ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete
e-mail na adresu [email protected].
Chcete-li zobrazit tuto diskusi na webu, navštivte
https://groups.google.com/d/msgid/django-cs/a55a7393-4145-4984-bb39-bbd39e484927%40googlegroups.com.