*Django 1.11.2*

I'd like to use SelectDateWidget.


class FrameDate(models.Model):
    through_date = models.DateField(null=True,
                                    blank=True,
                                    verbose_name=_("through"))
    ...

class FrameDateForm(ModelForm):

    def clean_through_date(self):
        pass # Breakpoint

    class Meta:
            model = FrameDate
            exclude = []

            years = range(1800, datetime.datetime.now().year + 1)

            widgets = {
                'frame': forms.HiddenInput(),
                'from_date': forms.SelectDateWidget(years=years),
                'through_date': forms.SelectDateWidget(years=years)
            }



As we can see, this DateField is not required. And have an empty choice at 
the top of the list ("---").

The problem is that when a user inputs only a month we'll get ValueError 
springing out to the user in case of Debug=True.

There is that method clean_through_date and the break point in it. But in 
case of incomplete set of month, day and year the program will not even 
call this clean_through_date() method. This method is called in two cases:

1) if the through_date is completely empty.

2) if it is completely filled.

If it is partially filled, form validation is ignored completely. The 
program explodes at CreateView.

*Could you comment on it? And give me a kick here: how to warn the user 
that s/he must either fill month, day and year or don't touch the 
through_date at all.*

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/24eabfb2-fe89-48a7-bce9-9bd7f6aa849b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to