У меня странная проблема.
Я недавно обновился до 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']
Это исправление работает. Я просто хотел спросить, был ли это правильный способ сделать это. Спасибо.