Нет проверки на выбор полей Django Postgres? - PullRequest
0 голосов
/ 22 февраля 2020

Я создал модель Студента с выбором полей. Однако, когда я сохраняю его, он не проверяет, есть ли выбор в вариантах, которые я указал в поле модели.

Почему это не мешает мне сохранить новый объект с выбором, который я не указал в своей модели?

Вот модель:

class Student(models.Model):
    year_in_school = models.CharField(
        max_length=4,
        choices= [
            ('FRES', 'Freshman'),
            ('SOPH', 'Sophomore'),
        ],
    )

А вот код, который я написал в оболочке:

>>> from app.models import Student
>>> new_student = Student.objects.create(year_in_school='HACK')
>>> new_student.year_in_school
'HA'

1 Ответ

1 голос
/ 22 февраля 2020

Возможно, вы захотите узнать больше о вариантах здесь . Соответствующая часть скопирована ниже:

Если выбор предоставлен, он принудительно проверяется проверкой модели

Выбор не применяется на уровне базы данных , Вам необходимо выполнить проверку модели (вызвав full_clean()), чтобы проверить ее.

full_clean() не будет вызываться автоматически при вызове метода save() вашей модели. Вам нужно будет позвонить вручную.

...