Обновлен до Django3 и JSONField выдает неожиданную ошибку - PullRequest
0 голосов
/ 14 февраля 2020

У меня странная проблема.

Я недавно обновился до django3 с Django 1.11 (python 3.8)

Следующий фрагмент кода работает в Django 1.11:

in models.py

from jsonfield import JSONField
class something(models.Model):
    answers = JSONField(blank=True)
    if 'csrfmiddlewaretoken' in self.answers:
        del self.answers['csrfmiddlewaretoken']

Когда я обновился до Django 3, я начал получать следующее исключение:

Traceback (последний вызов был последним): Файл "/env/lib/python3.8/site-packages/django/core/handlers/exception.py", строка 34, во внутреннем файле ответа = get_response (запрос) "/ env / lib / python3. 8 / site-packages / django / core / handlers / base.py ", строка 115, в _get_response response = self.process_exception_by_middleware (e, запрос) Файл" /env/lib/python3.8/site-packages/django /core/handlers/base.py ", строка 113, в _get_response response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)

Файл" /models.py ", строка 88, в save if 'csrfmiddlewaretoken 'в self.answers: TypeError: аргумент типа' NoneType 'не повторяется

Поэтому я сделал быстрое исправление и изменил свой код в Django 3 на: * 1 019 *

in models.py

from django.contrib.postgres.fields import JSONField 
#JSONField in core Django wasn't compatible with Django 3
class something(models.Model):
    answers = JSONField(blank=True,null=True)
    if self.answers is not None and 'csrfmiddlewaretoken' in self.answers:
        del self.answers['csrfmiddlewaretoken']

Это исправление работает. Я просто хотел спросить, был ли это правильный способ сделать это. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...