Ich habe mich umgesehen, und ich habe ein paar Lösungen gesehen, von denen ich dachte, dass sie für meinen eigenen Code funktionieren würden, aber nichts zu tun schienen.Python/Django - Erwartete eine Zeichenfolge oder ein bytesähnliches Objekt
Ich versuche, Daten aus einer JSON-Datei zu ziehen und die Informationen zu Arrays hinzuzufügen. Die Arrays werden dann verwendet, um Daten in mehrere Objekte einzugeben, die ich der Datenbank hinzufüge (ich weiß, das ist furchtbar ineffizient, aber so wie ich das ursprüngliche Skript geschrieben habe, musste ich keine Objekte zu einer Datenbank hinzufügen. Ich bin es planen, das zu ändern).
Objekt enthält eine Datumsangabe. Ich benutzte Pythons Strptime-Funktion, um die Strings in Datetime-Objekte zu konvertieren.
In meinem models.py habe ich ein DateTimeField für die Datetime.
Wenn ich versuche, und wandern aber ich folgende Fehlermeldung erhalten:
TypeError: expected string or bytes-like object
Hier ist die gesamte Traceback:
Applying interactive_table.0016_auto_20161024_2259...Traceback (most recent call last):
File "manage.py", line 22, in <module>
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)
Als Referenz hier ist mein views.py:
Hier ist meine models.py:
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')
Hier ist meine urls.py:
from django.conf.urls import url
from . import views
urlpatterns = [
# /table/
url(r'^$', views.display, name='display'),
]
Andere Lösungen für ähnliche Probleme haben gesagt, dass das Problem mit meinem Standardwert liegt. Wenn ich jedoch keine Standardwerte festlege (wie im Code gezeigt), bekomme ich immer noch den gleichen Fehler.
Erstens, da dies in einer Migration passiert, sollten Sie die Migration nicht * zeigen *? Und nicht mit Ihrem Problem verbunden, aber Sie müssen wirklich lernen, wie man Schleifen in Python macht; tipp: 'für x in range (len (was auch immer))' ist ein schreckliches Anti-Pattern. –
@DanielRoseman Wenn Sie diese Migration "anzeigen", meinen Sie die tatsächliche Datei, die im Migrationsordner erstellt wurde? –