首页 > 数据库 >django中正确创建数据库

django中正确创建数据库

时间:2023-10-28 23:01:41浏览次数:23  
标签:verbose models 创建 数据库 django length choices True name

新手学习django创建数据库时,经常因为设置不当或者操作步骤不对而状况百出。这里梳理一下主要步骤和注意重点和大家共同学习。这里以sqlite数据库为例。

首先,在创建完成项目和项目文件后,要将创建的文件添加到settings.py文件中的INSTALLED_APPS列表中,完成新建文件注册。

django中正确创建数据库_数据

第二步,编写models.py文件。这一步尤其要注意代码书写细节,一个单词或者标点符号写错就会造成映射文件生成错误。例如:choices不要漏掉s,length不要写成lenght等等。

from django.db import models

# Create your models here.

class Department(models.Model):
	'''部门表'''
	title = models.CharField(verbose_name='标题',max_length=16)

class Admin(models.Model):
	'''员工表'''
	username = models.CharField(verbose_name='姓名',max_length=32)
	password = models.CharField(verbose_name='密码',max_length=64)
	gender = models.IntegerField(verbose_name='性别',choices=[(1,"男"),(2,'女')])
	age = models.PositiveIntegerField(verbose_name='年龄',null=True,blank=True)
	department = models.ForeignKey(verbose_name='部门',to='Department',on_delete=models.CASCADE)

class Phone1(models.Model):
	'''号码表'''
	mobile = models.PositiveIntegerField(verbose_name='号码')
	price = models.SmallIntegerField(verbose_name='价格',default=0)
	level = models.SmallIntegerField(
									verbose_name='级别',
									choices=[(1,'1级'),(2,'2级'),(3,'3级')],
									default=1
									)
	status_choice =[(1,'已使用'),(2,'未使用')]
	status = models.SmallIntegerField(verbose_name='状态',choices=status_choice,default=1	)
	admin = models.ForeignKey(verbose_name='管理员',to='Admin',on_delete=models.CASCADE)

第三步,生成迁移映像数据。这一步是调用生成了数据库db.sqlite3和可供迁移的数据而并非用影像数据生成了带有数据的数据库。

django中正确创建数据库_数据库_02


django中正确创建数据库_sqlite_03

django中正确创建数据库_django_04

生成的可供迁移的数据0001_initial.py详细内容如下:

# Generated by Django 4.1.5 on 2023-10-28 13:49

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Admin',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('username', models.CharField(max_length=32, verbose_name='姓名')),
                ('password', models.CharField(max_length=64, verbose_name='密码')),
                ('gender', models.IntegerField(choices=[(1, '男'), (2, '女')], verbose_name='性别')),
                ('age', models.PositiveIntegerField(blank=True, null=True, verbose_name='年龄')),
            ],
        ),
        migrations.CreateModel(
            name='Department',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=16, verbose_name='标题')),
            ],
        ),
        migrations.CreateModel(
            name='Phone1',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('mobile', models.PositiveIntegerField(verbose_name='号码')),
                ('price', models.SmallIntegerField(default=0, verbose_name='价格')),
                ('level', models.SmallIntegerField(choices=[(1, '1级'), (2, '2级'), (3, '3级')], default=1, verbose_name='级别')),
                ('status', models.SmallIntegerField(choices=[(1, '已使用'), (2, '未使用')], default=1, verbose_name='状态')),
                ('admin', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.admin', verbose_name='管理员')),
            ],
        ),
        migrations.AddField(
            model_name='admin',
            name='department',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.department', verbose_name='部门'),
        ),
    ]


最后,运行migrate命令将映像数据写入到数据库

django中正确创建数据库_sqlite_05

查看数据库,新建的admin、department和phone1三个数据表已经生成。

django中正确创建数据库_sqlite_06


标签:verbose,models,创建,数据库,django,length,choices,True,name
From: https://blog.51cto.com/HiFine/8073116

相关文章

  • WGCLOUD体验 - 监测数据库的连通性
    WGCLOUD是一款运维监测平台,可以监测服务器、主机、数据库、服务接口、网络设备等资源我是一名DBA,日常工作中,主要关注数据库方面的监测情况,正好WGCLOUD有一个模块可以检测数据库是否能连通,如果发现不能连通,会立刻发送告警通知(可以用邮件、钉钉、wx等方式)如下WGCLOUD不但可以检测数据......
  • 数据库怎么分库的?怎么分表的?
    一、怎么分库垂直分库以表为依据,按照业务归属不同,将不同的表拆分到不同的库中。水平分库以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。二、怎么分表水平分表:以字段为依据,按照一定策略(hash、range等),将一个表中的数据拆分到多个表中。垂直分表:以字段为......
  • rust 创建多线程web server
    创建一个httpserver,处理http请求。创建一个单线程的web服务webserver中主要的两个协议是http和tcp。tcp是底层协议,http是构建在tcp之上的。通过std::net库创建一个tcp连接的监听对象,监听地址为127.0.0.1:8080.usestd::net::TcpListener;fnmain(){l......
  • 使用IDEA连接Mysql数据库
    前言IntelliJIDEA集成了众多插件,方便开发者使用,使用其自带的Database模块就可以很方便的配置、连接到数据库,本次操作以MySQL为例(本实验需提前装好Mysql和IDEA,如果还没安装可参考以下博客IntelliJIDEA下载安装及配置教程和mysql8.0.25安装配置教程)一、打开数据库服务器用管理员方......
  • vscode 创建代码片段
    1vscode左下角设置>命令面板2输入snippets3选择新建全局代码片段文件4输入文件名称xxx.json(例如:vue-setup-less.json)5设置模板并保存快捷生成模板地址点击跳转......
  • 创建一个django项目
    1.创建一个django项目在pycharm里面创建一个django的新项目在项目配置的时候选择好第一个app,templates文件和python环境(在环境里要先下好django)我这里用的是conda管理的环境django里面的目录结构最外层的是本项目名字的一个app,一个users的app,templates模板文件,manages.py(......
  • 用HashMap创建jString,ArrayList的键值对用entrySet遍历
    用HashMap创建jString,ArrayList的键值对用entrySet遍历package随机点名器;importjava.util.*;publicclassTest1{publicstaticvoidmain(String[]args){HashMap<String,ArrayList<String>>m=newHashMap<>();ArrayList<String>......
  • Python 框架学习 Django篇 (六) 数据表关联、ORM关联
    在后端服务器开发中,特别是前后端分离的架构中数据库是非常重要的,后端主要就是负责管理数据,而我们经常使用的mysql、oracle都是关系型数据库,什么是关系型数据库?就是建立在关系模型基础上的数据库,而最难处理的就是各个表之间的关联关系,一般这种关系分为三种:一对一、一对多、多对......
  • Python 框架学习 Django篇 (六) ORM关联
    像是上一章我们很少会通过页面点击去添加和绑定关系表,更多的时候都是通过django的语法实现,接下来我们做一个案例djangorom是怎么操作外键关系的创建mode模型表Django_demo/mgr/models.py#国家表classCountry(models.Model):name=models.CharField(max_length=100)#......
  • 【.NET Core】创建一个在后台运行的控制台程序(ConsoleApp)
    文章目录1.添加Nuget包2.修改Program.cs3.添加TestService借助.NET的通用主机(IHostBuilder)可以轻易创建一个可以执行后台任务的程序1.添加Nuget包Microsoft.Extensions.Hosting2.修改Program.cs通过Host获取IHostService,然后添加一个名为TestSerivce的后台服务。internalcl......