MCPcopy
hub / github.com/django/django / to_python

Method to_python

django/db/models/fields/__init__.py:1637–1688  ·  view source on GitHub ↗
(self, value)

Source from the content-addressed store, hash-verified

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):

Callers 1

get_prep_valueMethod · 0.95

Calls 2

parse_datetimeFunction · 0.90
parse_dateFunction · 0.90

Tested by

no test coverage detected