在Django 1.7中添加不带默认值的非空字段

在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

我创建了以下模型以了解如何使用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."""
        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
来允许存储空字符串。

错误似乎很明显。您希望它对现有行做什么?