Я использую Django 1.10 и попытаться сделать некоторые модели, в том числе несколько простых вариантов, это мой models.pyДжанго не проверяет длину CharField на objects.create
@python_2_unicode_compatible
class Person(models.Model):
Senior='A'
Middle='B'
Junior='C'
class_person=[(Senior,'Senior'),(Middle,'Middle'),\
(Junior,'Junior')]
name=models.CharField(max_length=100)
grade=models.CharField(max_length=2,choices=class_person,default=Junior)
def __str__(self):
return '%s in %s' % (self.name,self.grade)
def is_senior(self):
return self.grade in (self.Senior,self.Middle)
Теперь я пытаюсь сделать некоторые Person объекты экземпляра с помощью оболочки, например
Person.objects.create(name='John',grade='Another')
теперь я называю
Person.objects.all()
и возвращает
<QuerySet [<Person: John in Another>]>
Мой вопрос, почему Person класс atribute может создать «другой», как я знаю, что модели класса имеет максимальную длину 2. спасибо за объяснение
Ты уверен, что в базе данных определения столбцов таблиц соответствуют вашей модели? Если вы сыграли со значением max_length (или добавили его) после создания таблиц, я думаю, вы можете увидеть такое поведение. – mimo
Является ли @mimo уверенным, что вы применили все необходимые миграции? И какой тип db вы используете? –
@mimo да, я уверен, что применил все миграции до того, как я создал экземпляр объекта person, и я дважды проверяю его перед ответом на ваш вопрос, создав еще одну модель. –