首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django错误“添加非空字段”

Django错误“添加非空字段”
EN

Stack Overflow用户
提问于 2015-06-17 07:52:32
回答 1查看 7K关注 0票数 2

当我尝试移民时,我得到了像这样的错误django模型:

代码语言:javascript
运行
复制
    You are trying to add a non-nullable field 'person' to owner 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 now (will be set on all existing rows)
 2) Quit, and let me add a default in models.py

我使用django 1.8,这是我的模型:

代码语言:javascript
运行
复制
class Person(models.Model):
    user            = models.OneToOneField(User)
    alphanumeric    = RegexValidator(r'^[0-9a-zA-Z]*$', message='hanya yang mengandung karakter alphanumeric')
    email           = models.EmailField(verbose_name='email address', unique=True, max_length=244)
    username        = models.CharField(unique=True, max_length=20, validators=[alphanumeric])
    first_name      = models.CharField(max_length=30, null=True, blank=True)
    last_name       = models.CharField(max_length=30, null=True, blank=True)
    date_of_birth   = models.DateTimeField()
    date_joined     = models.DateTimeField(auto_now_add=True)


    USERNAME_FIELD      = 'username'
    REQUIRED_FIELDS     = ['email']

    def get_full_name(self):
        fullname = self.first_name+" "+self.last_name
        return self.fullname

    def get_short_name(self):
        return self.username

    def list_operator(self):
        return self.operators.all()

    def __str__(self):
        return self.email

class Operator(models.Model):
    person          = models.ForeignKey(Person, related_name="operators", null=True)
    alphanumeric    = RegexValidator(r'^[0-9a-zA-Z]*$', message='hanya yang mengandung karakter alphanumeric')
    email           = models.EmailField(verbose_name='email address', unique=True, max_length=244)
    username        = models.CharField(unique=True, max_length=20, validators=[alphanumeric])
    first_name      = models.CharField(max_length=30, null=True, blank=True)
    last_name       = models.CharField(max_length=30, null=True, blank=True)
    date_of_birth   = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.username;

我想知道我的代码哪里出错了。你能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-17 07:59:12

你的代码没有错。只要按照留言提供的说明..。

您的person模型中的Operator字段不能是null (因为null=True没有设置)。数据库中必须已经有运算符,因此Django不知道如何处理这些操作符。

您需要:(a)在模型中提供default值,(b)在迁移过程中提供缺省值,或者(c)为该字段启用null值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30885466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档