class User(AbstractBaseUser, PermissionsMixin):
# pass
# 不适用自增长的模型 使用uuid 全球唯一的字符串 short uuidpi
id = ShortUUIDField(primary_key=True)
uid = models.IntegerField(unique=True)
username = models.CharField(max_length=200, unique=True)
nickname = models.CharField(max_length=200)
is_owner = models.CharField(max_length=200)
password = models.CharField(max_length=200)
usergroup_id = models.IntegerField()
date_joined = models.DateTimeField(auto_now_add=True)
email = models.CharField(unique=True, max_length=200)
EventManage app下的model
class Event(models.Model):
title = models.CharField(default='',max_length=255,verbose_name='标题')
event_status = models.IntegerField(choices=((0,'进行中'),(1,'完成')),verbose_name='事件状态')
event_type = models.IntegerField(choices=((1,'业务变更'),(2,'网络优化'),(3,'质询')),verbose_name='事件类型')
event_reason = models.IntegerField(choices=((0,'无'),(1,'业务变化'),(2,'网络隐患'),(3,'客户质询'),(4,'内部质询')),verbose_name='事件原因')
customer_name = models.CharField(default='',max_length=255,verbose_name='客户名称')
business_num = models.CharField(default='',max_length=255,verbose_name='业务编号')
event_phenomenon = models.IntegerField(choices=((0,'无'),(1,'丢包'),(2,'延时增大'),(3,'中断'),(4,'流量异常')),verbose_name='事件现象')
treat_measures = models.TextField(default='',verbose_name='处理措施')
treat_process = models.TextField(default='',verbose_name='处理过程')
start_time= models.CharField(default='',max_length=255,verbose_name='开始时间')
end_time= models.CharField(default='',max_length=255,verbose_name='结束时间')
influence_duration = models.CharField(default='',max_length=255,verbose_name='影响时长')
event_originator = models.ForeignKey(to='ttsauth.User',on_delete=models.CASCADE,verbose_name='事件发起人')
originator_phone = models.CharField(default='',max_length=11)
ttuauth app下面的modelclass User(AbstractBaseUser, PermissionsMixin): # pass # 不适用自增长的模型 使用uuid 全球唯一的字符串 short uuidpi id = ShortUUIDField(primary_key=True) uid = models.IntegerField(un...
python manage.py makemigrations [appname]
这里的appname是指你需要指定django检查的app name, 运行该命令后, 即可生成迁移文件,
最后运行:
python manage.py migrate
以上一般可以解决问题, 如果还是有创建表格不全等问题的话, 可以将migrations文件, 数据库表, 以及__pycache__文件夹全部删除, 再按照上述步骤做一次。
在 MySQL 中,表有两种引擎,一种是 InnoDB ,另外一种是 myisam 。如果使用的是 InnoDB 引擎,是支持外键约束的。外键的存在使得 ORM 框架在处理表关系的时候异常的强大。因此这里我们首先来介绍下外键在 Django 中的使用。
类定义为 class ForeignKey(to,on_delete,**options) 。第一个参数是引用的是哪个模型,第二个参数是在使用外键引用的模型数据被删除了,这个字段该如何处理,比如有 CASCADE 、 SET_NULL 等。这里以一个实际案例来说明。比如有一个 User 和一个 Article 两个模型。一个 User
目录一、如何构建模型外键1. app内的外键构建2. 跨app的外键构建二、外键约束 - 删除操作的参数配置三、多表外键绑定,起别名 - related_name1. 别名的实际应用 - 外键值查询 - 反向过滤器的搜索
一、如何构建模型外键
1. app内的外键构建
# app/models.py
class App1(models.Model):
class App2(models.Model):
app2 = models.ForeignKey("App1", on_delet
1.
django从2.0开始ForeignKey
中的on_delete参数是必须的。
on_delete=None, # 删除关联表
中的数据时,当前表与其关联的field的行为
on_delete=
models.CASCADE, # 删除关联数据,与之关联也删除
on_delete=
models.DO_NOTHING, # 删除关联数据,什么也不做
on_delete=
models.PROTECT, # 删除关联数据,引发错误ProtectedError
django orm跨关系查询(ManyToManyField,ForeignKey多层查询)
Django提供了一种强大而直观的方式来“跟踪”查找中的关系,在后台自动用SQL JOIN处理。 要跨越关系,只需使用跨模型的相关字段的字段名称,用双下划线分隔,直到到达所需的字段。
这个例子检索所有Entry对象的 Blog,其name 为:’Beatles Blog’
from django....
在 PersonalCenter
app下的
models.py 下定义了一个 Footprint 类:
在 LoginAndRegister
app 下的
models.py下的 User 类
中,我想
建立与 Footpint 的多对多关联:
如图所示,在文件头已经 import 了 Footprint 类,但是运行 makemigrati...
这是一个太老声长谈的问题,我认为
1、主键:在一个数据库表格中的唯一标识,因此主键有个重要的属性,是不能重复且唯一,且不能为空,比如说,一个班级里有两个学生叫张三,学生名子显然不能作为学生表格的主键,因为我一搜张三,就会有两个张三同时跳出来,那什么可以呢,就是学号,因为学号在班级里是唯一的。其他还有很多例子,比如说,身份证号,工号等等,
2、外键:A表中的一个字段,是B表的主键,那他就可以是A表的外键,同上,如果有一个学生成绩表,学号是学生成绩表中的一个字段,那学号就是学生
一、django中跨app引用model,以app02中的model要引用app01中的model为例:
1、app01 的models.py 文件如下:
from django.db import models
# Create your models ...
一、使用django自带的user做外键,可以直接在model中使用。只需导入settings模块
使用方法:
在app应用(此处是Product应用)中的models.py文件,导入settings模块
# Product / models.py
from django.db import models
from django.contrib.auth import settings
class Product(models.Model):
productName = models.CharField('产品名称', max_length=20)
productDescriptio
第一个app下的model
from django.contrib.auth.models import AbstractUser
from django.db import models
# Create your models here.
class UserInfo(AbstractUser):
telephone=models.CharField(max_length=11,verbose_name='手机号',null=True,help_text='11位电话号码')
2、多表继承
3、proxy model(代理model)
第一种抽象继承,创建一个通用父类,为了使父类不会被创建,在抽象父类的Meta中设置abstract=True就可以。子类会继承父类相同的字段.
子类模型Stude...
Object of type ‘QuerySet‘ is not JSON serializable
至尊八戒:
python报错: name ‘null‘ is not defined
m0_62213336:
在python 中一次执行多条shell 命令:
longgggggggggggggggg: