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 django-cs@googlegroups.com
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 django-cs+unsubscr...@googlegroups.com.
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/a55a7393-4145-4984-bb39-bbd39e484927%40googlegroups.com.

Reply via email to