在 Django 1.7 中添加没有默认值的不可空字段
Adding non-nullable fields without a default in Django 1.7
我创建了以下模型来了解如何使用 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)
据说默认 models.CharField
具有属性 blank=False
意味着它不能存储空字符串值,它需要一个默认值以备不时之需store one, default="my default value"
如果它必须存储等同于空字符串的东西,将被使用。
要解决此问题,您可以执行以下操作
1)允许空字符串值
您可以通过指定来执行此操作:
_first_name = models.CharField(max_length=50, db_column='first_name', blank=True)
2)如果遇到空字符串就设置一个默认值
你给他一些东西来使用而不是存储一个空字符串。
您可以通过指定来执行此操作:
_first_name = models.CharField(max_length=50, db_column='first_name', default="My default value")
默认情况下我们不能存储空字符串,所以我们使用 blank=True
来允许。
我创建了以下模型来了解如何使用 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)
据说默认 models.CharField
具有属性 blank=False
意味着它不能存储空字符串值,它需要一个默认值以备不时之需store one, default="my default value"
如果它必须存储等同于空字符串的东西,将被使用。
要解决此问题,您可以执行以下操作
1)允许空字符串值
您可以通过指定来执行此操作:
_first_name = models.CharField(max_length=50, db_column='first_name', blank=True)
2)如果遇到空字符串就设置一个默认值
你给他一些东西来使用而不是存储一个空字符串。
您可以通过指定来执行此操作:
_first_name = models.CharField(max_length=50, db_column='first_name', default="My default value")
默认情况下我们不能存储空字符串,所以我们使用 blank=True
来允许。