问题
给定一个具有字段 的模型birthplace
,其中默认设置为空字符串:
class Person(models.Model):
person_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=256, blank=False)
birthplace = models.CharField(max_length=256, blank=True, default="")
...以及一些使用以下代码生成实例的代码:
kwargs = {
"name": json_data.get("name"),
"birthplace": json_data.get("birthPlace"),
}
person = models.Person(**kwargs)
person.save()
我希望 Django 将传入json_data.get("birthPlace")
评估为的默认值替换为None
. 但我得到:
IntegrityError:(1048,“列'出生地'不能为空”)
潜在的解决方案
我可以使用json_data.get("birthPlace", "")
,但这似乎非常不干燥,特别是因为“默认”值现在在两个或更多地方定义。
或者,我可以使用类似的东西:
json_data.get("birthPlace", Person._meta.get_field_by_name('field_name').default)
...但它仍然感觉非常复杂(对于 Python)。
我是否错过了一种更简单、更优雅的方式来解决这个特定问题?