Python 在不删除表的情况下更改模型中的Django数据类型

Python 在不删除表的情况下更改模型中的Django数据类型,python,mysql,django,postgresql,django-models,Python,Mysql,Django,Postgresql,Django Models,我已经创建了一个Django应用程序。现在我想更改模型中1个db字段的字段类型。因为数据库中已经有一些记录具有当前类型,所以我想不可能通过在models.py中简单地更改它来更改类型。通过谷歌搜索,我知道可以通过sql控制台进行更改,而无需删除表。但作为一个Django新手,我无法做到这一点。有人能帮我做这个吗?这是我的模特 class EmployeeDetails(models.Model): userName = models.CharField(max_length=200)

我已经创建了一个Django应用程序。现在我想更改模型中1个db字段的字段类型。因为数据库中已经有一些记录具有当前类型,所以我想不可能通过在models.py中简单地更改它来更改类型。通过谷歌搜索,我知道可以通过sql控制台进行更改,而无需删除表。但作为一个Django新手,我无法做到这一点。有人能帮我做这个吗?这是我的模特

class EmployeeDetails(models.Model):
    userName = models.CharField(max_length=200)
    designation = models.CharField(max_length=200)
    employeeID = models.IntegerField()
    contactNumber = models.CharField(max_length=200)
    project = models.CharField(max_length=200)
    dateOfJoin=models.TextField()
现在我想更改dateOfJoin=models.DateField()。如何使用sql控制台命令将textfeild更改为date字段而不删除表?

通常用于迁移架构和数据。我不确定它是否可以用于将文本字段转换为日期字段,但如果可以,我也不会感到惊讶。

您需要的应用程序是
以下是步骤(有关更多详细信息,请参阅文档):

这将创建一个迁移文件夹并伪造第一次迁移

然后在models.py中添加一个
new_dateOfJoin
DateField:

./manage.py migrate yourapp 
这将创建并立即应用迁移(名为0002_……),以将此字段添加到数据库中

创建一个新字段,您只需将文本值转换为最新值,并将其保存在新字段中 然后应用此迁移:

./manage.py migrate yourapp
修改models.py文件以注释掉旧的日期字段并再次迁移(这将创建0004_…迁移文件)

最后一步是重命名db字段,这样就不必修改现有代码:

./manage.py schemamigration yourapp rename_dateofjoin --empty
这将创建一个名为
0005\u rename\u dateofjoin的空模式迁移文件

手动修改此0005文件,如所述,但使用
db.rename\u列('app\u foo','name','full\u name')
如中所述

删除整个表而不是这5个步骤可能会更容易,但如果你有多个应用实例(如工作的生产服务器和开发机器),你需要这种工具。

对南方有了更好的了解,我们也可以用不到5个步骤来完成这项工作,但由于迁移有时很难撤消或复制,我更喜欢有不同的步骤…

我用另一种方式完成了。我通过sql控制台选择了我的数据库,并使用sql查询添加了新的列。这很好:),非常感谢你们的帮助。

不客气。如果它回答了您的问题,请单击我的答案旁边的“复选”标记,这样它就关闭了问题。谢谢,非常有用的演练!有人请用Django版本>1.7回答吗?
./manage.py schemamigration yourapp rename_dateofjoin --empty