(self, value)
| 1635 | return "DateTimeField" |
| 1636 | |
| 1637 | def to_python(self, value): |
| 1638 | if value is None: |
| 1639 | return value |
| 1640 | if isinstance(value, datetime.datetime): |
| 1641 | return value |
| 1642 | if isinstance(value, datetime.date): |
| 1643 | value = datetime.datetime(value.year, value.month, value.day) |
| 1644 | if settings.USE_TZ: |
| 1645 | # For backwards compatibility, interpret naive datetimes in |
| 1646 | # local time. This won't work during DST change, but we can't |
| 1647 | # do much about it, so we let the exceptions percolate up the |
| 1648 | # call stack. |
| 1649 | try: |
| 1650 | name = f"{self.model.__name__}.{self.name}" |
| 1651 | except AttributeError: |
| 1652 | name = "(unbound)" |
| 1653 | warnings.warn( |
| 1654 | f"DateTimeField {name} received a naive datetime ({value}) while " |
| 1655 | "time zone support is active.", |
| 1656 | RuntimeWarning, |
| 1657 | ) |
| 1658 | default_timezone = timezone.get_default_timezone() |
| 1659 | value = timezone.make_aware(value, default_timezone) |
| 1660 | return value |
| 1661 | |
| 1662 | try: |
| 1663 | parsed = parse_datetime(value) |
| 1664 | if parsed is not None: |
| 1665 | return parsed |
| 1666 | except ValueError: |
| 1667 | raise exceptions.ValidationError( |
| 1668 | self.error_messages["invalid_datetime"], |
| 1669 | code="invalid_datetime", |
| 1670 | params={"value": value}, |
| 1671 | ) |
| 1672 | |
| 1673 | try: |
| 1674 | parsed = parse_date(value) |
| 1675 | if parsed is not None: |
| 1676 | return datetime.datetime(parsed.year, parsed.month, parsed.day) |
| 1677 | except ValueError: |
| 1678 | raise exceptions.ValidationError( |
| 1679 | self.error_messages["invalid_date"], |
| 1680 | code="invalid_date", |
| 1681 | params={"value": value}, |
| 1682 | ) |
| 1683 | |
| 1684 | raise exceptions.ValidationError( |
| 1685 | self.error_messages["invalid"], |
| 1686 | code="invalid", |
| 1687 | params={"value": value}, |
| 1688 | ) |
| 1689 | |
| 1690 | def pre_save(self, model_instance, add): |
| 1691 | if self.auto_now or (self.auto_now_add and add): |
no test coverage detected