我创建了以下模型以了解如何使用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...
答案 0 :(得分:0)
试试这个:
first_name = models.CharField(max_length=50, db_column='first_name',blank=False)
答案 1 :(得分:0)
据说默认models.CharField
具有属性blank=False
,这意味着它无法存储空字符串值,并且需要存储一个值时需要默认值,{如果必须存储等同于空字符串的内容,则将使用{1}}。
要解决此问题,您可以执行以下操作
1)允许空字符串值
您可以通过指定:
来执行此操作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")
来允许它。