Как решить эту ошибку "Invalid default value for a django.models field error"?
Я создаю модель ученика, которая записывает данные о домашнем задании ученика. Она работает таким образом, что ученику дается задание на дом с некоторым сроком выполнения в несколько дней или часов. Когда я мигрирую, я получаю эту ошибку Я получаю эту ошибку
File "C:\Users\Lenovo\Documents\GitHub\All-in-one-project\ven\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
return executor(sql, params, many, context)
File "C:\Users\Lenovo\Documents\GitHub\All-in-one-project\ven\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\Lenovo\Documents\GitHub\All-in-one-project\ven\lib\site-packages\django\db\utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "C:\Users\Lenovo\Documents\GitHub\All-in-one-project\ven\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\Lenovo\Documents\GitHub\All-in-one-project\ven\lib\site-packages\django\db\backends\mysql\base.py", line 73, in execute
return self.cursor.execute(query, args)
File "C:\Users\Lenovo\Documents\GitHub\All-in-one-project\ven\lib\site-packages\MySQLdb\cursors.py", line 206, in execute
res = self._query(query)
File "C:\Users\Lenovo\Documents\GitHub\All-in-one-project\ven\lib\site-packages\MySQLdb\cursors.py", line 319, in _query
db.query(q)
File "C:\Users\Lenovo\Documents\GitHub\All-in-one-project\ven\lib\site-packages\MySQLdb\connections.py", line 254, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (1067, "Invalid default value for 'deadline_type'")
для моей этой модели
class WorkHour(models.Model):
DAYS= 'D'
HOURS= 'H'
STATUS = [
('D', 'Days'),
('H', 'Hours')
]
student= models.ForeignKey(Student, on_delete=models.CASCADE)
date= models.DateField(verbose_name='Date')
deadline_type= models.CharField(max_length=256,choices=STATUS,default= DAYS, verbose_name= "Days/Hours")
deadline_time = models.IntegerField(verbose_name='Deadline',default=1)
Либо я добавляю default value в deadline_type, это дает мне вышеуказанную ошибку. Я сделал то же самое и в других своих моделях. Я не знаю, что я делаю неправильно.
Вы не можете иметь DAYS= 'D' по умолчанию, потому что это не кортеж. Измените поле на такое:
deadline_type= models.CharField(max_length=16, choices=STATUS, default=STATUS[0], verbose_name="Days/Hours")
Таким образом, вы можете удалить DAYS= 'D' HOURS= 'H', и значением default всегда будет первый кортеж из STATUS.