title: Django : make_aware expects a naive datetime
body: <p>I started to work on a project built with Django and I can't figure something out.</p>
  
  <p>I have in my settings.py :</p>
  
  <pre><code>TIME_ZONE = 'UTC'
  
  USE_I18N = True
  
  USE_L10N = True
  
  USE_TZ = True
  </code></pre>
  
  <p>In my models.py, I have date fields like this :</p>
  
  <pre><code>#...
  date = models.DateTimeField(default=timezone.now)
  created_at = models.DateTimeField(auto_now_add=True)
  updated_at = models.DateTimeField(auto_now=True)
  #...
  </code></pre>
  
  <p>And my urls are defined like this in urls.py :</p>
  
  <pre><code>urlpatterns = patterns(
      '',
      url(r'^api/catalog/', include('catalog.urls')),
      url(r'^api/logs/', include('logs.urls')),
      url(r'^admin/', include(admin.site.urls)),
  )
  </code></pre>
  
  <p>And in catalog/urls.py :</p>
  
  <pre><code>router = DefaultRouter(trailing_slash=False)
  router.register(r'users', UserViewSet)
  # ...
  projects_router = NestedSimpleRouter(router, r'projects', lookup='project', trailing_slash=False)
  projects_router.register(r'requests', ProjectRequestViewSet, base_name='project-requests')
  # ...
  requests_router = NestedSimpleRouter(router, r'requests', lookup='request', trailing_slash=False)
  requests_router.register(r'statuses', RequestStatusViewSet, base_name='request-statuses')
  # ...
  urlpatterns = [
      url(r'^', include(router.urls)),
      url(r'^', include(projects_router.urls)),
      url(r'^', include(requests_router.urls)),
      url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')),
      url(r'^token-auth', views.obtain_auth_token),
  ]
  </code></pre>
  
  <p>And since I have updated to Django 1.9.1, I have the following warnings :</p>
  
  <blockquote>
    <p>.\env\lib\site-packages\django\template\utils.py:37: </p>
    
    <p>RemovedInDjango110Warning: You haven't defined a TEMPLATES setting.
    You must do so before upgrading to Django 1.10. Otherwise Django will
    be unable to load templates. "unable to load templates.",
    RemovedInDjango110Warning)</p>
    
    <p>.\balrog\urls.py:8: RemovedInDjango110Warning: </p>
    
    <p>django.conf.urls.patterns() is deprecated and will be removed in
    Django 1.10. Update your urlpatterns to be a list of
    django.conf.urls.url() instances instead. url(r'^admin/',
    include(admin.site.urls)),</p>
  </blockquote>
  
  <p>(That's not the main point of this question, but any help to remove these warnings is also appreciated.)</p>
  
  <p>And whenever I'm trying to get an object with a date field with the API, I get the following error : </p>
  
  <blockquote>
    <p>ValueError: make_aware expects a naive datetime, got 2016-01-15 17:18:44.258843+00:00</p>
  </blockquote>
  
  <p>So this error doesn't occur if <code>USE_TZ</code> is set to <code>False</code> but that's not ideal, I need it to be <code>True</code>.</p>
  
  <p>Another way to remove this error is to edit <code>.\env\Lib\site-packages\django\utils\timezone.py</code>
  And change this make_aware function :</p>
  
  <pre><code>def make_aware(value, timezone=None, is_dst=None):
      """
      Makes a naive datetime.datetime in a given time zone aware.
      """
      if timezone is None:
          timezone = get_current_timezone()
      if hasattr(timezone, 'localize'):
          # This method is available for pytz time zones.
          return timezone.localize(value, is_dst=is_dst)
      else:
          # Check that we won't overwrite the timezone of an aware datetime.
          if is_aware(value):
              raise ValueError(
                  "make_aware expects a naive datetime, got %s" % value)
          # This may be wrong around DST changes!
          return value.replace(tzinfo=timezone)
  </code></pre>
  
  <p>To this :</p>
  
  <pre><code>def make_aware(value, timezone=None, is_dst=None):
      """
      Makes a naive datetime.datetime in a given time zone aware.
      """
      if timezone is None:
          timezone = get_current_timezone()
      if hasattr(timezone, 'localize'):
          # This method is available for pytz time zones.
          return timezone.localize(value, is_dst=is_dst)
      else:
          return value
  </code></pre>
  
  <p>But that's not ideal neither.</p>
  
  <p>Why is my make_aware function even called since the dates should already be aware and not naive with <code>USE_TZ</code> set to <code>True</code> ? </p>
  
  <p>Btw, I'm using a SQLite database in case that's related (since sqlite use date field as string afaik)</p>