首页 > 解决方案 > 如何在 Django 中添加额外的列 mysql 数据库表?

问题描述

我是 Django 的新手。我正在为我的 django 项目使用 Mysql 数据库。我在 models.py 中创建了模型类。

在我的models.py

from django.db import models

class AuthModel(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    email = models.CharField(max_length=255)
    username = models.CharField(max_length=255) 
    password = models.CharField(max_length=255)

我已使用以下命令将此字段迁移到我的 Mysql 数据库中

 Python manage.py makemigrations  
 Python manage.py migrate 

这是在我的数据库中制作表格,如下所示
在此处输入图像描述

现在,我想在表中再添加一列“user_type”。
我可以从数据库中手动添加“user_type”列,但它不会将“user_type”值插入表中。因为我的“AuthModel”中没有包含“user_type”列。
如果我将 user_type 包含到“AuthModel”中并运行迁移命令,但是它不起作用。我想将 user_type 列添加到我的表中。怎么做?

标签: pythondjangodjango-modelsdjango-formsdjango-views

解决方案


首先,您应该在models.py中添加该字段

from django.db import models

class AuthModel(models.Model):
    user_type = models.CharField(max_length=255)

然后在admin.py中更改,方法是添加您在models.py 中声明的字段名称,例如 -

class UAdmin(admin.ModelAdmin):
    dics = ('user_type')

如果您有任何表单文件,然后将其更改添加,然后转到终端并 -

python manage.py makemigrations
python manage.py migrate

如果终端说-

Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Quit, and let me add a default in models.py

然后按 1 并提供一个值。

您的数据库将有新的 'user_type' 列。


推荐阅读