class DateTimeWithUsecsField(forms.DateTimeField): def clean(self, value): if value and '.' in value: value, usecs = value.rsplit('.', 1) # rsplit in case '.' is used elsewhere usecs += '0'*(6-len(usecs)) # right pad with zeros if necessary try: usecs = int(usecs) except ValueError: raise ValidationError('Microseconds must be an integer') else: usecs = 0 cleaned_value = super(DateTimeWithUsecsField, self).clean(value) if cleaned_value: cleaned_value = cleaned_value.replace(microsecond=usecs) return cleaned_value