YES = 'Y'
NO = 'N'
TO_USE= (
(YES, 'Yes'),
(NO, 'No'),
)
-----------
from myapp.models import YES
class XForm(forms.ModelForm):
def clean(self):
cleaned_data=super(XForm, self).clean()
txt= cleaned_data['txt'].strip()
use_txt=cleaned_data['use_txt'].strip()
if txt.__len__()==0 and use_txt == YES:
raise forms.ValidationError('This is needed!')
return cleaned_data
On Feb 1, 4:45 pm, NENAD CIKIC <nenad.ci...@gmail.com> wrote:
> Hello, the subject expresses my discomfort with certain python
> characteristics, given my background, and my lack of python knowledge.
> Specifically lets say that I have a model with a Text field and char field.
> The char field is length 1 and says "use or do not use the text field". The
> char field can have Y or N values.
> So using the admin interface I wanted to override the clean method but I
> did not want to write
> if text.__len__==0 and char=='Y':
> raise exception
>
> In C/C++ you would use enum for these sort of things. So I ended with
> defining in models.py something as:
> TO_USE= (
> ('Y', 'Yes'),
> ('N', 'No'),
> )
>
> class X(models.Model):
> txt= models.CharField(db_index=True,null=True, blank=True,max_length=30)
> use_txt=
> models.CharField(blank=False,max_length=1,default='D',choices=TO_USE)
>
> and in admin.py something as
> class XForm(forms.ModelForm):
> def clean(self):
> cleaned_data=super(XForm, self).clean()
> txt= cleaned_data['txt'].strip()
> use_txt=cleaned_data['use_txt'].strip()
>
> if txt.__len__()==0 and use_txt==TO_USE.__getitem__(0)[0]:
> raise forms.ValidationError('This is needed!')
>
> return cleaned_data
>
> The part .__getitem__(0)[0] is not very readable. I have looked for enums
> in python, and if I have understood well, it seems they are not implemented.
> What is the best way to do it in python for my problem, given that I do not
> want to write =='Y'.
> Thanks
> Nenad
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment