          day_name = self.day_field % name
          date_context['day'] = self.select_widget(attrs, choices=day_choices,).get_context(
              name=day_name,
              value=context['widget']['value']['day'],
              attrs={**context['widget']['attrs'], 'id': 'id_%s' % day_name},
          )
          subwidgets = []
          for field in self._parse_date_fmt():
              subwidgets.append(date_context[field]['widget'])
          context['widget']['subwidgets'] = subwidgets
 
</s> remove             attrs={**context['widget']['attrs'], 'id': 'id_%s' % month_name},
 </s> add             attrs={
                **context['widget']['attrs'],
                'id': 'id_%s' % month_name,
                'placeholder': _('Month') if self.is_required else False,
            }, </s> remove             attrs={**context['widget']['attrs'], 'id': 'id_%s' % year_name},
 </s> add             attrs={
                **context['widget']['attrs'],
                'id': 'id_%s' % year_name,
                'placeholder': _('Year') if self.is_required else False,
            },
            attrs={
                **context['widget']['attrs'],
                'id': 'id_%s' % day_name,
                'placeholder': _('Day') if self.is_required else False,
            },
          day_name = self.day_field % name
          date_context['day'] = self.select_widget(attrs, choices=day_choices,).get_context(
              name=day_name,
              value=context['widget']['value']['day'],
            attrs={
                **context['widget']['attrs'],
                'id': 'id_%s' % day_name,
                'placeholder': _('Day') if self.is_required else False,
            },
          )
          subwidgets = []
          for field in self._parse_date_fmt():
              subwidgets.append(date_context[field]['widget'])
          context['widget']['subwidgets'] = subwidgets
keep keep keep keep replace keep keep keep keep keep
 Fixed #29056 -- Fixed HTML5 validation of required SelectDateWidget.

placeholder is required for "select" with "required" attribute. 
django/forms/widgets.py