Django——model的创建与修改

本文介绍了在Django中如何配置MySQL数据库,创建model,以及如何修改已创建模型的字段类型和名称。在遇到ModuleNotFoundError时,提供了解决方案。通过manage.py命令,可以方便地更新数据库并进行ORM操作,无需直接编写SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、配置数据库

我用的是MySQL数据库
在settings中:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'lesson4',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': 'localhost',
        'PORT': '3306'
    }
}

二、创建一个model

在app文件夹下的models.py

#coding:utf-8
from django.db import models


class Test(models.Model):
    name = models.CharField(max_length=20)

然后在命令行中:

python manage.py makemigrations

在这里插入图片描述
这样就成功了,如果有这个error:ModuleNotFoundError: No module named ‘MySQLdb’
可以看上一篇文章。

0001_initial文件如下:

# Generated by Django 2.1.2 on 2021-11-12 15:30

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Test',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=20)),
            ],
        ),
    ]

这里因为我们没有创建主键,所以django自动创建了一个主键id。

接下来同步到数据库中:命令行:

python manage.py migrate

在这里插入图片描述
这时再进入mysql,进入database中,可以看到多了很多表。
auth_user: 是django自己的用户体系

现在我们想再向表里加一个字段:

age = models.IntegerField()

那么如何更新表呢?
命令行:python manage.py makemigrations
这时会提示你要添加‘age’字段吗,他没有默认值?
在这里插入图片描述
选择一:提供默认值
选择二:quit (直接退出了)

在这里插入图片描述
选择一
因为刚刚定义的int类型,所以可以给个整数作为默认值。

然后让他真正执行到数据库中:python manage.py migrate
在这里插入图片描述
在这里插入图片描述
多了age字段

三、给添加好的字段修改类型、名称

把age改成ages

ages = models.IntegerField()

在这里插入图片描述依旧有提示
然后再执行

数据库操作两条命令:

python manage.py makemigrations

python manage.py migrate

此外还可以修改类型,删除字段等,直接对class类里定义的静态变量操作就OK啦,还挺方便的

ORM操作还是很简单,直接用Python语句,不用使用SQL语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值