title: Python/Django - Expected a string or bytes-like object
body: <p>I've looked around, and I've seen a couple of solutions that I thought would work for my own code, but seemed to do nothing.</p>
  
  <p>I am trying to pull data from a JSON file and add the information to arrays. The arrays will then be used to input data into several objects that I add to the database (I know, this is terribly inefficient, but the way I wrote the original script, I didn't have to add objects to a database. I am planning on changing that).</p>
  
  <p>Object contains a date time associated with it. I used Python's strptime function to convert the strings into datetime objects.</p>
  
  <p>In my models.py, I have a DateTimeField for the datetime. </p>
  
  <p>When I try and migrate, however, I get the following error:</p>
  
  <pre><code>TypeError: expected string or bytes-like object
  </code></pre>
  
  <p>Here is the entire traceback:</p>
  
  <pre><code>Applying interactive_table.0016_auto_20161024_2259...Traceback (most recent call last):
    File "manage.py", line 22, in &lt;module&gt;
      execute_from_command_line(sys.argv)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
      utility.execute()
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/core/management/__init__.py", line 359, in execute
      self.fetch_command(subcommand).run_from_argv(self.argv)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/core/management/base.py", line 294, in run_from_argv
      self.execute(*args, **cmd_options)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/core/management/base.py", line 345, in execute
      output = self.handle(*args, **options)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 204, in handle
      fake_initial=fake_initial,
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/migrations/executor.py", line 115, in migrate
      state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards
      state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/migrations/executor.py", line 244, in apply_migration
      state = migration.apply(state, schema_editor)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/migrations/migration.py", line 129, in apply
      operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/migrations/operations/fields.py", line 84, in database_forwards
      field,
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/backends/sqlite3/schema.py", line 231, in add_field
      self._remake_table(model, create_fields=[field])
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/backends/sqlite3/schema.py", line 113, in _remake_table
      self.effective_default(field)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/backends/base/schema.py", line 221, in effective_default
      default = field.get_db_prep_save(default, self.connection)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 755, in get_db_prep_save
      prepared=False)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 1438, in get_db_prep_value
      value = self.get_prep_value(value)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 1417, in get_prep_value
      value = super(DateTimeField, self).get_prep_value(value)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 1275, in get_prep_value
      return self.to_python(value)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 1378, in to_python
      parsed = parse_datetime(value)
    File "/Users/andrewho/anaconda/lib/python3.5/site-packages/django/utils/dateparse.py", line 93, in parse_datetime
      match = datetime_re.match(value)
  </code></pre>
  
  <p>For reference, here is my views.py:</p>
  
  <pre><code>def getInfo(counter, hekJSON):
      for counter in range(len(hekJSON["Events"])):
          dateAndTimeHEK.append(convertTimes(hekJSON["Events"][counter]["startTime"]))
          xcen.append(float("%.2f" % hekJSON["Events"][counter]["xCen"]))
          ycen.append(float("%.2f" % hekJSON["Events"][counter]["yCen"]))
          xfov.append(float("%.2f" % hekJSON["Events"][counter]["raster_fovx"]))
          yfov.append(float("%.2f" % hekJSON["Events"][counter]["raster_fovy"]))
          sciObj.append(hekJSON["Events"][counter]["sciObjectives"])
  
  
  def convertTimes(dateAndTime):
      dateTime = datetime.datetime.strptime(dateAndTime, '%Y-%m-%d %H:%M:%S')
      return dateTime
  
  def display(request):
      noaaNmbr='11809'
      #for right now, this is the only active region that I'm pulling data for. When I get the graph up and running, I will make it more interactive for the user so that he can 
  
      urlData = "http://www.lmsal.com/hek/hcr?cmd=search-events3&amp;outputformat=json&amp;instrument=IRIS&amp;noaanum="+ noaaNmbr +"&amp;hasData=true"
  
      webUrl = urlopen(urlData)
      counter = 0
      data = webUrl.read().decode('utf-8')
      hekJSON = json.loads(data)
      getInfo(counter, hekJSON)
  
      for i in range(getNumberOfEntries(hekJSON)):
          observation = models.HEK_Observations(noaaNmbr=noaaNmbr, dateAndTime=dateAndTimeHEK[i], xcen=xcen[i], ycen=ycen[i], xfov=xfov[i], yfov=yfov[i], sciObj=sciObj[i])
          observation.save()
  
      return render(request, 'template.html', {'obj': models.HEK_Observations.objects.filter(noaaNmbr=noaaNmbr)})
  </code></pre>
  
  <p>Here is my models.py:</p>
  
  <pre><code>from django.db import models
  import datetime
  
  class HEK_Observations(models.Model):
      dateAndTime = models.DateTimeField(max_length = 40, default = None, verbose_name = 'Date And Time')
  </code></pre>
  
  <p>Here is my urls.py:</p>
  
  <pre><code>from django.conf.urls import url
  from . import views
  
  urlpatterns = [
      # /table/
      url(r'^$', views.display, name='display'),
  ]
  </code></pre>
  
  <p>Other solutions to similar problems have said that the problem lies with my default value. However, when I set no defaults (like shown in the code), I still get the same error.</p>