Необходимо ли назначать значение по умолчанию в поле модели?

Как я знаю, в Django требуется, чтобы пользователь определял значение по умолчанию значение по умолчанию для полей модели. Например:

class Student(models.Model):
    """Student info"""
    id = models.CharField( max_length=7,primary_key=True,default =-1)
    name = models.CharField(_('name'),max_length=8, default="x"); 

Но меня это очень раздражает. Я просто не знаю, какие значения должны быть присвоены в первую очередь. Пользователь должен принимать решение.

Могу я просто

  1. Дать None в качестве значения по умолчанию? Какие могут быть последствия? NPE?
  2. Дать случайное значение.

Является ли специфическим предоставление значения по умолчанию полю модели в Django? Или это общее для большинства MVC веб-фреймворков. Или это связано с учетом базы данных? Спасибо

вы можете установить null=True, blank=True, если вы не хотите, чтобы это поле было обязательным.

null=True и blank=True - это две разные вещи, и их не следует смешивать.

Чтобы не иметь поля по умолчанию в атрибуте вашей модели, вам просто нужно null=True, что в основном означает "Я не против того, чтобы этот столбец хранил нулевые значения".

blank=True означает, что когда этот атрибут появляется в ModelForm, соответствующее поле будет отображаться как required. В основном это касается валидации формы.

Это может показаться крайним случаем, тем более что многие люди предпочитают писать свои собственные формы, а не использовать Django ModelForm, но знаете, что еще использует ModelForm? Админка django.

Да, поэтому если вы не хотите, чтобы это поле required также было в админке django, то вам следует добавить blank=True в атрибут вашей модели.

Но наличие blank=True не влияет на то, нужно или нет значение по умолчанию.

Если поля не являются обязательными (могут быть пустыми), то вы можете сделать их нулевыми, используя null=True. Обратите внимание, что для полей типа char лучше использовать blank=True вместо этого.

Что касается второй вещи, о которой вы упомянули, можно передать вызываемую функцию в поле модели в качестве значения по умолчанию. Так, вы можете написать функцию, которая генерирует случайные значения, и передать ее в качестве значения по умолчанию для поля.

Вернуться на верх