#python #django #python-3.x #django-models
#python #django #python-3.x #django-модели
Вопрос:
Я написал эту простую модель в django-2, и когда я попытался перенести, я получил
Ошибка значения: недопустимый литерал для int() с основанием 10: «
from django.db import models
class Teacher(models.Model):
name = models.CharField(max_length=50)
user = models.IntegerField(default='',blank=True)
passcode = models.IntegerField(default='',blank=True)
def __str__(self):
return self.name
class Student(models.Model):
name = models.CharField(max_length=50)
user = models.IntegerField(default='', blank=True)
passcode = models.IntegerField(default='', blank=True)
teacher = models.ManyToManyField(Teacher)
def __str__(self):
return self.name
class Lesson (models.Model):
name = models.CharField(max_length=50)
cource = models.IntegerField(default='', blank=True)
teacher = models.ForeignKey("Teacher", on_delete=models.CASCADE)
Student = models.ManyToManyField(Student)
def __str__(self):
return self.name
class Score(models.Model):
score = models.FloatField(default='', blank=True)
student = models.ForeignKey(Student, on_delete=models.CASCADE)
lesson = models.ForeignKey(Lesson, on_delete=models.CASCADE)
Ответ №1:
Значения по умолчанию для IntegerField
и FloatField
не могут быть строкой.
default=''
означает пустую строку.
Измените значения по умолчанию для IntegerField
и FloatField
на некоторое число или набор null=True
:
Пример:
# Means it can not be empty and if it received empty, put 0 instead.
score = models.FloatField(default=0, blank=True)
Или
# Means it is okay to be empty.
score = models.FloatField(null=True, blank=True)
Кроме того, вам, вероятно, потребуется удалить файлы переноса для предыдущих изменений.
Комментарии:
1. спасибо, брат. можете ли вы объяснить, почему я должен удалить последнюю миграцию?
2. Файлы миграции создаются с предыдущими изменениями, которые
default=' '
и которые останавливают завершение миграции с новыми изменениями. Просто попробуйте удалить их, если вы снова получили ошибку, и если вы этого не сделали, тогда нет необходимости.