Проверка должна быть сделана на форме, а не на модели.Однако, если вы используете ModelForms, что обычно имеет большой смысл, он унаследует некоторые правила проверки от самих моделей (те, которые относятся к базе данных, например, максимальная длина поля, тип поля базы данных, но также, если они могут бытьне заполнено).
Значение поля по умолчанию должно быть передано его конструктором:
form = SomeForm(initial={'alive' : 0})
Хотя в вашем случае получается, что если значения, которые могут быть получены, равны только нулю и единице, онобыло бы разумно использовать вместо него BooleanField
(т. е. в этом случае по умолчанию оно будет равно false).
В случае разрешений я бы создал отображение между возможным разрешением и некоторым произвольным значением.
RESOLUTIONS = (
("1","800x600"),
("2","1024x768"),
.....
)
и затем передайте его модели:
resolutions = models.CharField(RESOLUTIONS, max_length=1)
, чтобы пользователь получил поле выбора с соответствующими параметрами и значениями.С другой стороны, если вам нужно, чтобы пользователь вставил его сам, использовать два поля (одно для ширины, другое для высоты) было бы намного проще, чем проверка ввода пользователя.
Таким образом, вы можете определитьМетод для модели:
def get_resolution(self):
return "%sx%s" % (self.width, self.height)