Django 架模型之models说明和问题集锦

本文详细介绍了如何确认Django中Modal的创建是否成功,包括检查数据库表结构、解决自定义模型与数据库结构不一致的问题,以及手动删除表后的重建流程。同时提供了Modal操作的手册和常见问题解决方案。

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

1.怎么确定modal是否成功?
  1. 直接打开数据库,在数据库中查看是否有那你创建的表以及表结构是否一致
  2. 打开usermodal(用户模型)/migrations/目录,查看里面的py文件。0001_initial.py是初次生成的时候产生的py,然后当模型发生改变的时候会生成一个新的py(不是覆盖)。可以查看py里面的结构。
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-05-11 13:36
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='User',
            fields=[
                ('u_name', models.CharField(blank=True, max_length=20)),
                ('u_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
                ('u_psw', models.CharField(max_length=64)),
                ('u_phone', models.CharField(blank=True, max_length=24)),
                ('u_status', models.IntegerField(blank=True)),
            ],
        ),
    ]

2.创建的数据库结构和自定义的模型不一致?
  1. 请检查class 定义每个字段的时候后面是否有‘,’。如果有逗号则该字段会失败
#每个字段之间,没有多余的逗号,否则会失败
class User(models.Model):
    u_name = models.CharField(max_length=20,blank=True)		 	#用户姓名,可以为空
    u_id = models.CharField(max_length=255,primary_key=True) 	#用户id,设置为主键
    u_psw = models.CharField(max_length=64,blank=False) 		#用户密码,不允许为空
    u_phone=models.CharField(max_length=24,blank=True) 			#用户联系方式,可以为空
    u_status=models.IntegerField(blank=True)					#用户状态,可为空
3.手动删除表之后无法自动重建?

参考:https://blog.youkuaiyun.com/androidstarjack/article/details/89216892

  1. 这是因为django存在缓存的原因,所以我们需要删除对应的数据库和模型下的缓存。例如我的数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

所以我需要删除项目目录下的db.sqlite3数据库文件,以及模型下的这些文件
在这里插入图片描述
在这里插入图片描述
此时在重新执行命令即可。

4.modal 操作手册

参考:https://blog.youkuaiyun.com/weixin_37773766/article/details/80330221

Django模型层(models)是用于定义应用程序中的数据模型的一组类。它们以Python类的形式定义,每个类表示一个数据库表,每个属性表示表中的一个字段。模型层提供了一个简单的API来执行各种数据库操作,如创建、读取、更新删除(CRUD)。 在Django中,模型层是使用ORM(对象关系映射)来实现的,ORM是一种将数据库表映射到对象的技术。通过ORM,我们可以使用Python代码来创建、查询操作数据库,而不需要编写SQL语句。 在编写模型时,我们可以指定各种字段类型,如CharField、IntegerField、ForeignKey等,以及各种选项,如null、blank、default等。还可以定义模型方法属性,以及各种元数据,如排序方式、表名等。 例如,以下是一个简单的模型类定义: ```python from django.db import models class Author(models.Model): name = models.CharField(max_length=100) email = models.EmailField() def __str__(self): return self.name ``` 在上面的例子中,我们定义了一个Author类,它表示一个数据库表。这个表有两个字段:nameemail,都是CharFieldEmailField类型。我们还定义了一个__str__方法,以便在调试时能够轻松地查看对象。 在Django中,我们可以使用以下命令来执行各种数据库操作: - python manage.py makemigrations:创建数据库迁移文件。 - python manage.py migrate:执行数据库迁移操作。 - python manage.py shell:进入Django shell,可以使用Python代码来操作数据库。 总之,Django模型层提供了一个方便的方法来定义操作数据库模型。它简化了我们的开发工作,使我们能够更专注于业务逻辑的实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值