2013-08-19 2 views
0

Я начинаю с этим:Создание модели с нулевым атрибутом. Ошибка в Django 1.3.6?

from django.db import models 

class Example(models.Model): 
    id = models.CharField(null=False, blank=False) 
    name = models.CharField(null=False, blank=False) 

Теперь, если я создаю новый объект с именем и без идентификатора, то идентификатор будет заменен пустой строкой и создание объекта будет успешным.

example = Example.objects.create(name="test") 

Я хотел бы, чтобы вернуть ошибку вместо того, чтобы с тех пор я указал null=False и blank=False. Есть ли «родной» способ сделать это? Я использую Django 1.3.6.

+1

если вы посмотрите на документ; dont использовать null для Charfield https://docs.djangoproject.com/en/dev/ref/models/fields/#null –

+0

Это может быть полезно: http://stackoverflow.com/questions/843580/writing-a-init -функция-быть-использована-в-django-модели – mshsayem

+0

Ну, я запрещаю «null», но Django решает, что, когда я даю ему «Нет», он должен быть преобразован в пустую строку ... – Youcha

ответ

1

Это не ошибка, конечно, но полностью объясняется в документации. От field options docs:

Если поле пустое = истинное, проверка формы позволит ввести пустое значение. Если поле имеет пустое значение = False, поле будет необходимо.

Ключ является ссылкой на Подтверждение. Разумеется, у документов также есть целый выбор на data validation. Опять же, с этой страницы:

Обратите внимание, что валидаторы не будет запускаться автоматически при сохранении модели, но если вы используете ModelForm, он будет работать ваш валидаторы на любых полях, которые включены в форму.

Таким образом, как показано на странице проверки модели, для применения проверки для blank = False вы должны запустить метод модели full_clean().

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

+0

Вы имеете в виду способ переопределить метод save для запуска 'full_clean' перед сохранением? – Youcha