在Django 1.7中添加不带默认值的非空字段
我创建了以下模型以了解如何使用Django属性:在Django 1.7中添加不带默认值的非空字段,django,django-models,Django,Django Models,我创建了以下模型以了解如何使用Django属性: from django.db import models class Person(models.Model): _first_name = models.CharField(max_length=50, db_column='first_name') @property def first_name(self): """This is the getter. You can add logic too
from django.db import models
class Person(models.Model):
_first_name = models.CharField(max_length=50, db_column='first_name')
@property
def first_name(self):
"""This is the getter. You can add logic too."""
return self._first_name
@first_name.setter
def first_name(self, fname):
self._first_name = fname
为什么在运行“makemigrations”命令时会出现以下错误。在Django 1.7之前,我不必为字段指定默认值。这和我使用房产装饰师有什么关系吗
谢谢
You are trying to add a non-nullable field '_first_name' to person without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default...
2) Quit...
试试这个:
first_name = models.CharField(max_length=50, db_column='first_name',blank=False)
据说default
models.CharField
具有属性blank=False
这意味着它不能存储空字符串值,如果需要存储空字符串值,它需要一个默认值,default=“my default value”
如果必须存储与空字符串等效的内容,则将使用该开关。
要解决此问题,可以执行以下操作
1)允许空字符串值
为此,请指定:
_first_name = models.CharField(max_length=50, db_column='first_name', blank=True)
_first_name = models.CharField(max_length=50, db_column='first_name', default="My default value")
2)如果遇到空字符串,则设置默认值
你给他一些可以使用的东西,而不是存储一个空字符串
为此,请指定:
_first_name = models.CharField(max_length=50, db_column='first_name', blank=True)
_first_name = models.CharField(max_length=50, db_column='first_name', default="My default value")
默认情况下,我们不能存储空字符串,因此我们使用
blank=True
来允许存储空字符串。错误似乎很明显。您希望它对现有行做什么?