У меня есть такая модель:
class Test(models.Model)
name = models.CharField(max_length=30, default="Unassigned")
Всякий раз, когда экземпляр этой модели сохраняется с None
в поле name
, я хочу, чтобы экземпляр сохранялся с "Unassigned"
.Но если я сделаю это:
>>> test = Test()
>>>test.name = None
>>>test.save()
В настоящий момент произойдет сбой с
django.db.utils.IntegrityError: Сбой ограничения NOT NULL: explorer_api_test.name
в последней строке, поскольку, очевидно, поле name
не допускает нулевые значения (в нем нет null=True
).
Но , если я разрешаю нулевые значения, ононе будет сохранено со значением по умолчанию "Unassigned"
, но вместо None
.
Что я могу изменить в определении модели , чтобы каждый раз, когда его экземпляр пытался сохранить с помощью None
в поле он сохраняется со строкой по умолчанию?Вне определения модели я мог бы сделать это:
>>>test = Test()
>>>test.name = None
>>>if test.name is None:
>>>...test.name = "Unassigned"
>>>test.save()
, но я предпочитаю иметь эту логику в самой модели.