1 - Вы не должны путать null
с blank
null
означает, что для поля не было указано значение. Если null=False
, то вы должны указать значение для поля
title = models.CharField(null = False)
......
item = Item(.....)
item.save() # won't save
item = Item(....., title='hello world')
item.save() # will save
blank
означает, что значение поля существует, но оно пустое. Если blank=Flase
, то вы должны указать хотя бы непустое значение.
title = models.CharField(blank= False)
item = Item(.....)
......
item.save() # won't save
item = Item(....., title='')
item.save() # won't save
item = Item(....., title='hello world')
item.save() # will save
2 - FileField
и ImageField
все сохраняются в виде строки в базе данных, и вы можете добавить null=False
или blank=False
, чтобы сделать их необходимыми так же, как вы делаете с CharField
.
file = models.FileField(null=False, blank=False)
Вы можете даже добавить больше ограничений, таких как расширение файла и размер файла, используя validators
.