Как исправить «django.core.exceptions.ValidationError: [« »значение имеет недопустимый формат. Оно должно быть в формате ГГГГ-ММ-ДД ЧЧ: ММ [: ss [.uuuuuu]] [TZ].»] " - PullRequest
0 голосов
/ 30 апреля 2019

models.py

class Questions:
    question_text = models.CharField(max_length=200)
    pub_date = models.DateField(null=True, blank=True, default='')
    slug = `models.CharField(max_length=10, unique=True, default="question")`

    def __str__(self):
        return self.question_text

views.py

def import_sheet(request):

        if request.method == "POST":
        form = UploadFileForm(request.POST,
                              request.FILES)
        if form.is_valid():
            request.FILES['file'].save_to_database(
                name_columns_by_row=2,
                model=Question,
                mapdict=['question_text', 'pub_date', 'slug'])
            return HttpResponse("OK")
        else:
            return HttpResponseBadRequest()
    else:
        form = UploadFileForm()
    return render(request, 'perfimport/import.html', {'form': form})

Внутренняя ошибка сервера: / import / Traceback (последний вызов был последним): Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ core \ handlers \ exception.py", l ин 34, во внутреннем response = get_response (запрос) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ core \ handlers \ base.py", строка 1 15, в _get_response response = self.process_exception_by_middleware (e, запрос) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ core \ handlers \ base.py", строка 1 13, в _get_response response = wrapped_callback (запрос, * callback_args, ** callback_kwargs) Файл "C: \ Users \ Desktop \ PerfImport \ importer \ perfimport \ views.py", строка 20, в файле import_sheet mapdict = ['question_text', 'pub_date', 'slug']) Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ django_excel__init __. Py", строка 49, в базе данных save_to_database pe.save_as (** PARAMS) Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pyexcel \ core.py", строка 82, в с ave_as вернуть sources.save_sheet (sheet, ** dest_keywords) Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pyexcel \ internal \ core.py", строка 48, в листе сохранения вернуть _save_any (a_source, лист) Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pyexcel \ internal \ core.py", строка 60, в _save_any a_source.write_data (экземпляр) Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pyexcel \ plugins \ sources \ db_sour ces.py ", строка 65, в write_data ** self._keywords Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pyexcel \ plugins \ renderers \ djang" o.py ", строка 37, в render_sheet_to_stream ** ключевые слова Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pyexcel_io \ io.py", строка 129, в сохранить данные ** ключевые слова Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pyexcel_io \ io.py", строка 146, в store_data writer.write (данные) Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pyexcel_io \ book.py", строка 221, в записи sheet_writer.close () Файл "C: \ Users \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pyexcel_io \ database \ importers \ d jango.py ", строка 54, в закрытии self. objs, batch_size = self .__ batch_size Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ manager.py", строка 82 , в manager_method return getattr (self.get_queryset (), name) (* args, ** kwargs) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ query.py", строка 474, в массовом_создании ids = self._batched_insert (objs_without_pk, поля, batch_size, ignore_conflicts = ignore_conflicts) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ query.py", строка 1211 в _batched_insert self._insert (item, fields = fields, using = self.db, ignore_conflicts = ignore_conflicts) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ query.py", строка 1186 в _insert return query.get_compiler (using = using) .execute_sql (return_id) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ sql \ compiler.py", li 1331, в execute_sql для sql, params в self.as_sql (): Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ sql \ compiler.py", li ne 1275, в as_sql для объекта в self.query.objs Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ sql \ compiler.py", li ne 1275, в для объекта в self.query.objs Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ sql \ compiler.py", li ne 1274, в [self.prepare_value (field, self.pre_save_val (field, obj)) для поля в полях] Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ sql \ compiler.py", li ne 1215, в prepare_valuevalue = field.get_db_prep_save (value, connection = self.connection) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ fields__init .py", строка 789, в get_db_prep_save вернуть self.get_db_prep_value (значение, соединение = соединение, подготовлено = False) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ fields__init __. Py", строка 1273, в get_db_prep_value значение = self.get_prep_value (значение) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ fields__init __. Py", строка 1268, в get_prep_value вернуть self.to_python (значение) Файл "C: \ Users \ AppData \ Roaming \ Python \ Python37 \ site-packages \ django \ db \ models \ fields__init __. Py", строка 1243, в to_python params = {'value': value}, django.core.exceptions.ValidationError: [«значение pub_date» имеет недопустимый формат даты. Оно должно быть в формате ГГГГ-ММ-ДД

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Дата по умолчанию не может быть пустой строкой.Поскольку вы допускаете NULL, просто не устанавливайте значение по умолчанию, поэтому, если дата пропущена, это будет просто NULL.

Так что измените:

pub_date = models.DateField(null=True, blank=True, default='')

на:

pub_date = models.DateField(null=True, blank=True)
0 голосов
/ 30 апреля 2019

Это ошибка, полученная из данных, которые вы пытаетесь поместить в базу данных, или из вашей формы.Кажется более вероятным, что это исходит из проверок модели, но я не совсем уверен без класса формы.

Я предполагаю, что это происходит из поля pub_date в модели Вопроса, поэтому данныевведено не в формате, ожидаемом формой / моделью.Если вы можете поделиться фактическими данными (или полезным примером), мы можем помочь с устранением неполадок, что именно является причиной ошибки.

...