Python 将字段添加到现有模型不需要';我不在Django工作

Python 将字段添加到现有模型不需要';我不在Django工作,python,django,sqlite,django-models,Python,Django,Sqlite,Django Models,我已经用OneToOneField和用户模型创建了自己的模型。现在,我想将字段添加到该模型中,但执行manage.py makemigrations和migrate并没有看到对我的models.py所做的任何更改 models.py: class UserDetails(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE,) footsize = models.CharField(ma

我已经用OneToOneField和用户模型创建了自己的模型。现在,我想将字段添加到该模型中,但执行
manage.py makemigrations
migrate
并没有看到对我的
models.py
所做的任何更改

models.py

class UserDetails(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,)
    footsize = models.CharField(max_length=10)
    headsize = models.CharField(max_length=10)

    handsize = models.CharField(max_length=100) #field what I want to add

    def __str__(self):
        return u'%s %s %s' % (self.id, self.footsize, self.headsize)

如果我尝试使用shell向handsize添加值,我会得到一个错误,即handsize字段不存在。有什么问题吗?

当您说您已经创建了模型时,我假设您运行了初始迁移。因此,在输入新字段后再次运行迁移时,不能运行一揽子迁移。在makemigrations之后,您必须指定应用程序名称。像这样的

./manage.py makemigrations app_name

./manage.py migrate.

应该能用。

我测试了我的备份,做了与我问题中相同的事情。终端在执行
makemigrations
时显示此消息:

You are trying to add a non-nullable field 'handsize' to userdetails 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
Select an option:
我确信,我之前的回答是1),所以这就是字段没有显示在数据库中的原因。现在,我回答了2)并在字段中添加了默认值:

    handsize = models.CharField(max_length=10, default='40')

现在,
migrate
可以工作,并将handsize作为一个新字段添加到数据库中

这是此应用程序的第一次迁移吗?您是否已在“django设置”中的“已安装的应用程序”下添加了该应用程序?@r3ign是的,Ihave@Sayse不,我以前做过。您使用什么命令进行makemigrations?你能把它贴在这里吗。