Это вполне очевидно - если get_or_create
находит запрашиваемый объект, defaults
keword ничего не делает.Но если он создает объект, то экземпляр, хранящийся в obj
, имеет поле birthday
(в вашем примере), заполненное соответствующим значением.Вы можете передать любой словарь как defaults
, если его ключи являются действительными именами полей для запрашиваемой модели.
Чтобы очистить всю таблицу, вы должны использовать что-то вроде:
Model.objects.all().delete()
, что эквивалентно:
DELETE FROM app_model WHERE True;
Чтобы установить какое-либо поле в каждом объекте (некоторый столбец в каждой строке), есть метод update()
:
Model.objects.all().update( some_field = "" )
, который переводитto:
UPDATE app_model SET `some_field` = '' WHERE True;
Мой sql немного ржавый, но я считаю, что так или иначе, так или иначе.