python测试开发django-12.models设置主键primary_key
前言
django的models新增数据库表时,如果不设置主键,会默认新增一个id为主键,如果我们想自己设置一个字段为主键,需加个参数primary_key=True
默认id主键
新增一张用户表,表名为user 字段user_name, psw ,mail 都是字符串类型,设计如下
# models.py
from django.db import models
# Create your models here.
# 我们新建了一个Person类,继承自models.Model,
class Person(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()
# 新增一张用户表,表名为user 字段user_name, psw ,mail 都是字符串类型
class User(models.Model):
user_name = models.CharField(max_length=30)
psw = models.CharField(max_length=30)
mail = models.CharField(max_length=30)
cmd执行makemigrations和migrate
python manage.py makemigrations
python manage.py migrate
然后就可以看到hello_user表新增成功了,默认多一个字段id为主键

设置主键primary_key
新增一张用户表,表名为user 字段user_name(主键), psw ,mail 都是字符串类型,我们设置user_name为主键,让用户名不重复,设计如下
# models.py
from django.db import models
# Create your models here.
# 我们新建了一个Person类,继承自models.Model,
class Person(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()
# 新增一张用户表,表名为user 字段user_name, psw ,mail 都是字符串类型
class User(models.Model):
user_name = models.CharField(max_length=30,
primary_key=True) # 设置为主键
psw = models.CharField(max_length=30)
mail = models.CharField(max_length=30)
cmd执行makemigrations和migrate
python manage.py makemigrations
python manage.py migrate
然后就可以看到hello_user表新增成功了,主键user_name就会代替默认的id主键了

django交流QQ群:779429633
python测试开发django-12.models设置主键primary_key的更多相关文章
- python测试开发django-11.模型models详解
前言 Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库 只需要在settings ...
- python测试开发django-15.查询结果转json(serializers)
前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...
- python测试开发django-rest-framework-63.基于函数的视图(@api_view())
前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...
- python测试开发django-197.django-celery-beat 定时任务
前言 django-celery-beat 可以支持定时任务,把定时任务写到数据库. 接着前面这篇写python测试开发django-196.python3.8+django2+celery5.2.7 ...
- python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)
前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布 ...
- python测试开发django-36.一对一(OneToOneField)关系查询
前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...
- python测试开发django-16.JsonResponse返回中文编码问题
前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...
- 2019第一期《python测试开发》课程,10月13号开学
2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...
- windows和linux中搭建python集成开发环境IDE——如何设置多个python环境
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
随机推荐
- Densenet-Tensorflow
在寻找densnet网络的时候,我发现了一个结构清晰完整的网络代码,在此作备份. https://github.com/taki0112/Densenet-Tensorflow Densenet-Te ...
- day22-23作业
1.字节流 字符流 2.read() 3.-1 4.System.out 5.InputStream 6.OutputStream 1.IO流按流向分为输入流和输出流,即输入流和输出流 ...
- JQ实现弹幕效果
JQ实现弹幕效果,快来吐糟你的想法吧 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html> <head> <meta charse ...
- Card Game Cheater HDU1528
二分图最大匹配问题 扑克题还是用map比较方便 #include<bits/stdc++.h> using namespace std; #define MAXI 52 ]; ]; int ...
- 使用SOCKET获取网页的内容
使用fsockopen()函数来实现获取页面信息,完整代码如下 //设置字符集(由于要抓取的网易网站字符集编码是gbk编码) header("content-type:text/html;c ...
- Java反射1——扫描某个包下的所有类
1.从包package中获取所有的Class /** * 从包package中获取所有的Class * * @param pack * @return */ public static Set< ...
- Windows下CRF++进行中文人名识别的初次尝试
语料来自1998年1月份人民日报语料 1 语料处理 1.1 原始语料数据格式 语料中,句子已经被分词好,并且在人名后以“/”标注了“nr”表示是人名,其他非人名的分词没有进行标注 1.2 CRF++要 ...
- 循序渐进学.Net Core Web Api开发系列【9】:常用的数据库操作
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇描述一 ...
- 使用Metasploit工作区
使用Metasploit工作区 Metasploit将所有数据都存储在PostgeSQL服务器中的msf数据库.渗透测试人员经常要使用Metasploit同时执行多个任务.为了避免数据混杂,Met ...
- DPDK+OpenvSwitch-centos7.4安装
系统版本 [root@controller ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) DPDK版本: dpdk- ...