一:表一的字段分析

class Sheep_Area(models.Model):
# models.AutoField()自增列,要显示自定义的自增列,必须定义primary=True
# area_id 这个是在数据库中存的名字,对应在浏览器显示的名字为verbose_name,这样方便阅读。
area_id = models.AutoField(primary_key=True, verbose_name='牧场编号')
# models.CharField()字符串字段,必须需要设置max_length,对应数据库中的 varchar(50),允许为空。
province = models.CharField(max_length=50,verbose_name='省份',null=True)
city = models.CharField(max_length=100,verbose_name='市',null=True)
district = models.CharField(max_length=50,verbose_name='区',null=True)
county = models.CharField(max_length=100,verbose_name='县',null=True)
town = models.CharField(max_length=100,verbose_name='乡镇',null=True)
# models.BooleanField() 布尔类型,默认值是False
isdelete = models.BooleanField(default=False, verbose_name='逻辑删除')
class Meta:
db_table = 'sheep_area' # 数据库中的表名
# class Meta 是一个类中嵌套的抽象类,主要目的是给基类Sheep_Area提供其他的信息,基类就负责表字段的设计
db_table 就是指明基类创建表的表名,如果不指定表名,默认是 sheep_sheep_area,小写app应用名_小写模型类名

二:表二的字段分析

class Sheep_Farm(models.Model):
farm_id = models.AutoField(primary_key=True, verbose_name='牧场编号')
farm_name = models.CharField(max_length=100, verbose_name='牧场名称')
address = models.CharField(max_length=300, verbose_name='牧场地址')
username = models.CharField(max_length=100, verbose_name='用户名', null=True)
phone = models.CharField(max_length=20, verbose_name='联系电话', null=True)
user_id = models.IntegerField(verbose_name='用户ID')
# blank=True 针对表单的,表示表单填写字段的时候,可以为空,否则必须有值,null=True是针对数据库的。
create_date = models.DateField(default=datetime.date.strftime(datetime.date.today(), "%Y-%m-%d"),verbose_name='创建日期', blank=True)
# area = models.ForeignKey(to='Sheep_Area', on_delete=models.CASCADE,null=True)
isdelete = models.BooleanField(default=False, verbose_name='逻辑删除')
# 外键的理解:https://blog.csdn.net/hpu_yly_bj/article/details/78939748
class Meta:
db_table = 'sheep_farm'

三:表三的字段分析

class Sheep_Fold(models.Model):
# 羊舍类型
# choice选择字段:用于页面上的选择框标签,需要先提供一个二维的二元元组,第一个元素表示存在数据库内真实的值,第二个表示页面上显示的具体内容
fold_choice = (
('', '育肥羊舍'),
('', '泌乳羊舍'),
('', '羔羊舍'),
('', '后备羊舍'),
('', '种公羊舍'),
('', '青年母羊舍'),
('', '成年母羊舍'),
('', '基本母羊舍'),
('', '待产羊舍'),
('', '隔离舍')
)
f_id = models.AutoField(primary_key=True, verbose_name='羊圈号')
f_name = models.CharField(max_length=50, null=True, verbose_name='羊圈名字')
f_type = models.CharField(max_length=10, choices=fold_choice, verbose_name='羊圈的类型')
# models.ForeignKey(),外键设置,关联了Sheep_Farm,表明了一对多的关系,Sheep_Farm是一,Sheep_Fold是多
# on_delete=models.CASCADE 表示层级删除,表示删除主表的数据后从表的数据也会删除。on_delete=models.SET_NULL 表示主表删除这条记录,从表将数据置空
farm = models.ForeignKey(to='Sheep_Farm', on_delete=models.CASCADE)
isdelete = models.BooleanField(default=False, verbose_name='逻辑删除') class Meta:
db_table = 'sheep_fold'

四:表四的字段分析

# 羊信息模型
class Sheep_Info(models.Model):
# 羊品种类型
type_choice = (
('', '萨能奶山羊 '),
('', '关中奶山羊'),
('', '其他')
)
# 性别
sex_choice = (
('', '公'),
('', '母')
)
# 级别
grade_choice = (
('', '特级'),
('', '一级'),
('', '二级')
)
status_choice = (
('','在场'),
('','活淘'),
('','死亡')
) # 羊的ID
s_id = models.AutoField(primary_key=True, verbose_name='羊ID号')
# 羊编号/耳号
sheep_number = models.IntegerField(null=False, verbose_name='羊编号/耳号')
# 设备号
equipment_number = models.CharField(max_length=20, verbose_name='设备号', null=True)
# 羊品种
sheep_type = models.CharField(max_length=3, choices=type_choice, verbose_name='羊品种')
# 性别
sex = models.CharField(max_length=2, choices=sex_choice, verbose_name='性别')
# 出生日期'
# birthday = models.CharField(max_length=20,default=datetime.date.strftime(datetime.date.today(), "%Y-%m-%d"),verbose_name='出生日期',blank=True,)
birthday = models.DateField(default=datetime.date.strftime(datetime.date.today(), "%Y-%m-%d"), verbose_name='出生日期')
# 初生重'
birthday_weight = models.FloatField(verbose_name='初生重')
# 断奶重
weaning_weight = models.FloatField(verbose_name='断奶重', blank=True, null=True)
# 成年体重
weight = models.FloatField(verbose_name='体重', blank=True, null=True)
# 羊的级别
grade = models.CharField(max_length=3, choices=grade_choice, verbose_name='羊的级别', blank=True)
# 种公羊射精量
ejaculatory_amount = models.CharField(max_length=3, choices=grade_choice, verbose_name='射精量', blank=True,null=True)
# 年均产奶量
avg_milk_year = models.FloatField(blank=True, null=True, verbose_name='年平均产奶量')
# 总产量
all_milk = models.FloatField(blank=True, null=True, verbose_name='终生总产量')
# 父代
father = models.CharField(blank=True, null=True, max_length=50, verbose_name='父代')
# 母代
mather = models.CharField(blank=True, null=True, max_length=50, verbose_name='母代')
# 羊圈外键:羊舍通过fold属性就能看到所有和自己关联的羊,也就是羊舍里面的每一头羊的信息。
fold = models.ForeignKey(to='Sheep_Fold', on_delete=models.CASCADE)
# 牧场外键
farm = models.IntegerField(verbose_name='所属养场')
# 羊现在的状态
sheep_status = models.CharField(max_length=3, choices=status_choice, verbose_name='羊现在的状态',default='')
# 逻辑删除
isdelete = models.BooleanField(default=False, verbose_name='逻辑删除')
class Meta:
db_table = 'sheep_info' 羊信息录入的前端

五:表五的字段分析

# 羊活淘的羊信息
class Sheep_Info_LiveOut(models.Model):
# 羊品种类型
type_choice = (
('', '萨能奶山羊 '),
('', '关中奶山羊'),
('', '其他')
)
# 性别
sex_choice = (
('', '公'),
('', '母')
)
# 级别
grade_choice = (
('', '特级'),
('', '一级'),
('', '二级')
)
status_choice = (
('','在场'),
('','活淘'),
('','死亡')
) # 羊的ID
s_id = models.AutoField(primary_key=True, verbose_name='羊ID号')
# 羊编号/耳号
sheep_number = models.IntegerField(null=False, verbose_name='羊编号/耳号')
# 设备号
equipment_number = models.CharField(max_length=20, verbose_name='设备号', null=True)
# 羊品种
sheep_type = models.CharField(max_length=3, choices=type_choice, verbose_name='羊品种')
# 性别
sex = models.CharField(max_length=2, choices=sex_choice, verbose_name='性别')
# 出生日期'
# birthday = models.CharField(max_length=20,default=datetime.date.strftime(datetime.date.today(), "%Y-%m-%d"),verbose_name='出生日期',blank=True,)
birthday = models.DateField(default=datetime.date.strftime(datetime.date.today(), "%Y-%m-%d"), verbose_name='出生日期')
# 初生重'
birthday_weight = models.FloatField(verbose_name='初生重')
# 断奶重
weaning_weight = models.FloatField(verbose_name='断奶重', blank=True, null=True)
# 成年体重
weight = models.FloatField(verbose_name='体重', blank=True, null=True)
# 羊的级别
grade = models.CharField(max_length=3, choices=grade_choice, verbose_name='羊的级别', blank=True)
# 种公羊射精量
ejaculatory_amount = models.CharField(max_length=3, choices=grade_choice, verbose_name='射精量', blank=True,null=True)
# 年均产奶量
avg_milk_year = models.FloatField(blank=True, null=True, verbose_name='年平均产奶量')
# 总产量
all_milk = models.FloatField(blank=True, null=True, verbose_name='终生总产量')
# 父代
father = models.CharField(blank=True, null=True, max_length=50, verbose_name='父代')
# 母代
mather = models.CharField(blank=True, null=True, max_length=50, verbose_name='母代')
# 羊圈外键
fold = models.ForeignKey(to='Sheep_Fold', on_delete=models.CASCADE)
# 牧场外键
farm = models.IntegerField(verbose_name='所属养场')
# 羊现在的状态
sheep_status = models.CharField(max_length=3, choices=status_choice, verbose_name='羊现在的状态',default='')
# 逻辑删除
isdelete = models.BooleanField(default=False, verbose_name='逻辑删除')
class Meta:
db_table = 'sheep_info_liveOut'

六:表六的字段分析

# 羊死亡的信息
class Sheep_Info_Death(models.Model):
# 羊品种类型
type_choice = (
('', '萨能奶山羊 '),
('', '关中奶山羊'),
('', '其他')
)
# 性别
sex_choice = (
('', '公'),
('', '母')
)
# 级别
grade_choice = (
('', '特级'),
('', '一级'),
('', '二级')
)
status_choice = (
('', '在场'),
('', '活淘'),
('', '死亡')
) # 羊的ID
s_id = models.AutoField(primary_key=True, verbose_name='羊ID号')
# 羊编号/耳号
sheep_number = models.IntegerField(null=False, verbose_name='羊编号/耳号')
# 设备号
equipment_number = models.CharField(max_length=20, verbose_name='设备号', null=True)
# 羊品种
sheep_type = models.CharField(max_length=3, choices=type_choice, verbose_name='羊品种')
# 性别
sex = models.CharField(max_length=2, choices=sex_choice, verbose_name='性别')
# 出生日期'
# birthday = models.CharField(max_length=20,default=datetime.date.strftime(datetime.date.today(), "%Y-%m-%d"),verbose_name='出生日期',blank=True,)
birthday = models.DateField(default=datetime.date.strftime(datetime.date.today(), "%Y-%m-%d"), verbose_name='出生日期')
# 初生重'
birthday_weight = models.FloatField(verbose_name='初生重')
# 断奶重
weaning_weight = models.FloatField(verbose_name='断奶重', blank=True, null=True)
# 成年体重
weight = models.FloatField(verbose_name='体重', blank=True, null=True)
# 羊的级别
grade = models.CharField(max_length=3, choices=grade_choice, verbose_name='羊的级别', blank=True)
# 种公羊射精量
ejaculatory_amount = models.CharField(max_length=3, choices=grade_choice, verbose_name='射精量', blank=True, null=True)
# 年均产奶量
avg_milk_year = models.FloatField(blank=True, null=True, verbose_name='年平均产奶量')
# 总产量
all_milk = models.FloatField(blank=True, null=True, verbose_name='终生总产量')
# 父代
father = models.CharField(blank=True, null=True, max_length=50, verbose_name='父代')
# 母代
mather = models.CharField(blank=True, null=True, max_length=50, verbose_name='母代')
# 羊圈外键
fold = models.ForeignKey(to='Sheep_Fold', on_delete=models.CASCADE)
# 牧场外键
farm = models.IntegerField(verbose_name='所属养场')
# 羊现在的状态
sheep_status = models.CharField(max_length=3, choices=status_choice, verbose_name='羊现在的状态', default='')
# 逻辑删除
isdelete = models.BooleanField(default=False, verbose_name='逻辑删除')
class Meta:
db_table = 'sheep_info_death'

django之数据模型类的字段分析的更多相关文章

  1. Django之集合函数使用与mysql表的创建特殊字段分析

    1. 集合函数的使用场景: -- 单独使用: 不分组, 只查聚合结果 -- 分组使用: 按字段分组, 可查询分组字段与聚合结果 2. 导入聚合函数 from django.db.models impo ...

  2. Django项目的ORM操作之--数据模型类创建

    在django项目中,其自带了ORM(Object Relation Mapping)对象关系映射框架,我们在django项目下app的models模块下对类进行操作,通过ORM会将我们对类的操作转化 ...

  3. Django中ORM介绍和字段及其参数

    ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...

  4. phpcms v9二次开发之数据模型类

    系统模型类:model.class.php数据模型类的位置:/phpcms/libs/classes phpcms v9二次开发中,我们要经常需要对模块的数据表进行查询.添加.修改和删除数据等操作,所 ...

  5. Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)

    Django中ORM介绍和字段及字段参数   Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...

  6. django中模型详解-字段类型与约束条件

    这片博文来详细说明django模型的使用,涉及到django模型的创建,字段介绍,以及django模型的crud操作,以及一对一等操作. 在使用模型之前,我们首先设置数据库选项,django的默认数据 ...

  7. C#类中字段封装为属性

    本文描述内容转载 https://zhidao.baidu.com/question/1174413218458798139.html 感谢 冥冥有你PD 的解答!!! 问题思索1 类成员包括变量和方 ...

  8. django定义模型类-14

    目录 1. 定义 字段类型 约束类型 django的模型类定义在应用下的 models.py 文件中. 模型类继承自 django.db.models 包下的 Model 类. 新创建应用 book ...

  9. Django框架 之 ORM 常用字段和参数

    Django框架 之 ORM 常用字段和参数 浏览目录 常用字段 字段合集 自定义字段 字段参数 DateField和DateTimeField 关系字段 ForeignKey OneToOneFie ...

随机推荐

  1. TCP报文段首部格式详解

    TCP首部格式   格式字段详解   源端口.目标端口: 计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两 ...

  2. code_action

    w https://raw.githubusercontent.com/laravel/laravel/master/config/database.php <?php return [ /* ...

  3. set集合 浅层拷贝会和深层拷贝

    一.什么是set集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 1.去重,把一个列表变成集合, ...

  4. 阶段1 语言基础+高级_1-3-Java语言高级_03-常用API第二部分_第5节 StringBuilder类_1_StringBuilder的原理

    字符串不可变.字符串的缓冲区是可以变的 字符串Sting的底层,被final修饰的不可变的数组 a+b+c最终会产生5个字符串

  5. Java Bean 使用包装类型 还是基本类型

    参考:实体类中用基本类型好,还是用包装类型好_ - 牵牛花 - 博客园 int优缺点 优点: 1.用于Bean的时候,有默认值.比如自己拼接sql增加一个User时,会方便很多,不过现在都用ORM框架 ...

  6. 利用python+tkinter做一个简单的智能电视遥控器

    要通过python实现遥控器功能分两步: 第一步:开发图形化界面,以暴风TV的遥控器按钮为例 第二步:使PC端给电视发送相应指令(此步骤需要打开电视的adb开关) 现在就开始第一步操作实现遥控器功能, ...

  7. 剑指offer--day10

    1.1 题目:二叉搜索树的后序遍历序列:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 1.2 思路: 以{ ...

  8. Android.应用软件.常用程序下载地址_20190913

    1. 1.1. 健康友行 微信 官网 https://weixin.qq.com/ 抖音 chrome 百度网盘(账号:osskill)中有 1.2. 支付宝 官网 https://mobile.al ...

  9. Vue 基础 day06 webpack 3.x 结合vue

    在普通页面使用 render 函数渲染组件 var login = { template: '<h3>login</h3>' } var vm = new Vue({ // c ...

  10. Samba服务问答

    1. samba服务用在什么地方?samba服务用于把Linux服务器上的文件或者打印接共享给windows或者Linux. 2. 在samba服务的配置文件中,[global]配置部分的securi ...