Сбой ограничения NOT NULL - пользовательская дата в простой истории django - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь создать пользовательскую модель для поля history_date в django simple-history, но при попытке сохранить в БД я получаю сообщение об ошибке NOT NULL constraint failed

У меня уже есть некоторые данные в текущих полях из модели history_date по умолчанию - пример 2019-05-29 19:19:03.922533, но я хочу изменить это на День / Месяц / Год

Я импортировал дату и время с from datetime import datetime

Документы: https://django -simple-history.readthedocs.io / en / 2.7.0 / history_model.html # custom-history-date

Модель:

class NodesData(models.Model):
    Node = models.CharField(max_length=20, default="Anonymous Node")
    NodeIP = models.CharField(max_length=15)
    NodeCountry = models.CharField(max_length=30, default="Not Found")
    NodeCity = models.CharField(max_length=30, default="Not Found")
    NodeISP = models.CharField(max_length=30, default="Not Found")
    NodeLat = models.CharField(max_length=15, default="Not Found")
    NodeLon = models.CharField(max_length=15, default="Not Found")
    Node_id = models.CharField(max_length=128, default="Not Found")
    Node_Cores = models.CharField(max_length=15, default="Not Found")
    Node_Subtask_Success = models.CharField(max_length=15, default="Not Found")
    Node_Subtask_Error = models.CharField(max_length=15, default="Not Found")
    Node_Subtask_Timeout = models.CharField(max_length=15, default="Not Found")
    Node_Task_Requested = models.CharField(max_length=15, default="Not Found")
    Node_Blender_Performance = models.CharField(max_length=15, default="Not Found")
    Node_OS = models.CharField(max_length=10, default="Not Found")
    Node_OS_system = models.CharField(max_length=10, default="Not Found")
    Node_OS_release = models.CharField(max_length=25, default="Not Found")
    Node_OS_version = models.CharField(max_length=300, default="Not Found")
    Node_OS_windows_edition = models.CharField(max_length=25, default="Not Found", blank=True)
    Node_OS_linux_distribution = models.CharField(max_length=50, default="Not Found", blank=True)
    Node_Version = models.CharField(max_length=8, default="Not Found")
    Node_Memory = models.CharField(max_length=15, default="Not Found")
    Node_Disk = models.CharField(max_length=15, default="Not Found")
    history = HistoricalRecords()
    __history_date = None


    @property
    def _history_date(self):

        return self.__history_date

    @_history_date.setter
    def _history_date(self, value):
        value = datetime.today().strftime('%d-%m-%Y')
        self.__history_date = value

Traceback:

Traceback (most recent call last):
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 298, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: NOT NULL constraint failed: backgroundtasks_historicalnodesdata.history_date

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/background_task/tasks.py", line 43, in bg_runner
    func(*args, **kwargs)
  File "/home/django/copypaste/cleanup/backgroundtasks/tasks.py", line 243, in csvscraper
    foo.save()
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/models/base.py", line 718, in save
    force_update=force_update, update_fields=update_fields)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/models/base.py", line 758, in save_base
    update_fields=update_fields, raw=raw, using=using,
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 175, in send
    for receiver in self._live_receivers(sender)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 175, in <listcomp>
    for receiver in self._live_receivers(sender)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/simple_history/models.py", line 459, in post_save
    self.create_historical_record(instance, created and "+" or "~", using=using)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/simple_history/models.py", line 501, in create_historical_record
    history_instance.save(using=using)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/models/base.py", line 718, in save
    force_update=force_update, update_fields=update_fields)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/models/base.py", line 748, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/models/base.py", line 831, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/models/base.py", line 869, in _do_insert
    using=using, raw=raw)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/models/query.py", line 1136, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1289, in execute_sql
    cursor.execute(sql, params)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/backends/utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/home/django/copypaste/cleanup/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 298, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: NOT NULL constraint failed: backgroundtasks_historicalnodesdata.history_date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...