Django MultiWidget中的MultiWidget如何压缩第一个?

Django MultiWidget中的MultiWidget如何压缩第一个?,django,django-admin,django-forms,django-widget,Django,Django Admin,Django Forms,Django Widget,我有两个MultiWidget,一个在另一个里面,但问题是包含的MultiWidget不返回compress,我如何从第一个widget获得正确的值? 在本例中,来自SplitTimeWidget class SplitTimeWidget(forms.MultiWidget): """ Widget written to split widget into hours and minutes. """ def __init__(self, attrs=None)

我有两个MultiWidget,一个在另一个里面,但问题是包含的MultiWidget不返回compress,我如何从第一个widget获得正确的值? 在本例中,来自SplitTimeWidget

class SplitTimeWidget(forms.MultiWidget):
    """
    Widget written to split widget into hours and minutes.
    """
    def __init__(self, attrs=None):
        widgets = (
                    forms.Select(attrs=attrs, choices=([(hour,hour) for hour in range(0,24)])),
                    forms.Select(attrs=attrs, choices=([(minute, str(minute).zfill(2)) for minute in range(0,60)])),
                  )
        super(SplitTimeWidget, self).__init__(widgets, attrs)

    def decompress(self, value):
        if value:
            return [value.hour, value.minute]
        return [None, None]


class DateTimeSelectWidget (forms.MultiWidget):
    """
    A widget that splits date into Date and Hours, minutes, seconds with selects
    """
    date_format = DateInput.format

    def __init__(self, attrs=None, date_format=None):
        if date_format:
            self.date_format = date_format
        #if time_format:
        #    self.time_format = time_format

        hours = [(hour,str(hour)+' h') for hour in range(0,24)]
        minutes = [(minute,minute) for minute in range(0,60)]
        seconds = minutes #not used always in 0s
        widgets = (
            DateInput(attrs=attrs, format=self.date_format),
            SplitTimeWidget(attrs=attrs),
            )
        super(DateTimeSelectWidget,self).__init__(widgets, attrs)

    def decompress(self, value):
        if value:
            return [value.date(), value.time()]
        else:
            [None, None, None]

我会创建一个大的多窗口小部件,比如DateSelectTimeSplitWidget,它使用您需要的所有标准窗口小部件。(3个选择,2个输入)。毕竟,它将被存储到一个时间戳字段中,对吗?

事实上,我正在寻找1xTextInput(日期)和2xSelect(小时、分钟),我已经准备好完成了,事实是我不想重复我自己,但无论如何都完成了。如果您将日期输入select?,我的意思是在正确的月份中显示28天、30天和31天的天数,您会怎么做?javascript?我将使用django/forms/extras/widgets.py作为起点。如果用户选择了无效日期(例如2010/02/30),则表单字段将引发常见的ValidationError。我从未为这种情况费心实现一些javascript。