Запретите Django добавлять postgres timestamptz к запросу при импорте данных
У меня есть команда управления для django, чтобы импортировать данные из файла csv в приложение. Эта команда управления работает в основном нормально, за исключением того, что поле даты в моей модели, которое имеет значение по умолчанию "сейчас", не может быть переопределено.
Вот код моей команды управления 'load_data':
from django.db import connection
import csv
from django.core.management import BaseCommand
from myapp.models import myitem
class Command(BaseCommand):
help = 'Load a csv file into the database'
def add_arguments(self, parser):
parser.add_argument('--path', type=str)
def handle(self, *args, **kwargs):
path = kwargs['path']
with open(path, 'rt', errors='ignore') as f:
reader = csv.reader(f, dialect='excel')
for row in reader:
print ("\n22: "+row[0]+"\n")
print("\nQuery: "+connection.queries)
print ("\n\n24: "+row[1]+"\n")
print ("\n24: "+row[2]+"\n\n")
MyItem.objects.create(
itemProp1=row[0],
itemProp2=row[1],
itemDate=row[2],
)
Код в основном работает, за исключением попытки импортировать поле itemDate, вместо того, чтобы присвоить ему значение из импортируемой строки, django хочет установить время в now.
Выдается следующая ошибка, которая заключается в следующем:
django.db.utils.DataError: value too long for type character varying(20)
Запрос соединения, используемый при попытке импортировать данные образца, полученный с помощью моей распечатки выше, следующий:
INSERT INTO "myapp_myitem" ("itemProp1", "itemProp2", "itemDate") VALUES (\'heavy\', \'green\', '\'2022-06-23T00:00:00+00:00\'::timestamptz)
Ассоциированная модель, в которую я пытаюсь импортировать данные, следующая:
from django.db import models
from django.utils import timezone
class MyItem(models.Model):
itemProp1 = models.CharField(max_length=200)
itemProp2 = models.CharField(max_length=200)
itemDate = models.DateTimeField(default=timezone.now)
Насколько я могу определить, эта ошибка вызвана тем, что django пытается установить значение по умолчанию для поля itemDate, вместо того, чтобы позволить ему быть установленным моим назначением load_data.
Как я могу решить эту проблему?