关于django查询model数据的记录

  1. Pycharm 2017.3.3
  2. Django 1.11.6
  3. Python 3.5.2

一. 建立model类型

# 从 Django 中引入 models
from django.db import models

# Create your models here.
 见下面的实例 
这是实例会涉及到多对多, 一对多. 一对一

创建数据库 makemigrations app 和 migrate app

1.字段参数
下面列举一下目前笔者在开发中用到的一些字段:

max_length:指定字段的长度值,接受一个数字,CharField 必须指定最大长度, TextField 不需要。
verbose_name:字段标签的可读名称,接受一个字符串。如果不指定,Django 会从字段名称去推断默认的详细名称,建议每一个字段都进行指定。
default:字段默认值。
null:是否可以为 null,接受 True 或者 False。
blank: 是否可以为空,同样接受 True 或者 False。
primary_key:如果设置为 Ture,则该字段置为模型主键,如果模型中没有指定主键,则 Django 会自动为模型添加一个主键,默认为 id。
help_text:为 HTML 表单文本提供单文本标签。
choices:一组字段选项,提供这一项的时候,默认对应的表单不见是选择字段的盒子,而不是标准文本字段。
2.字段类型
CharField:用来定义短到中等长度的字段字符串,必须指定 max_length 属性。
TextField:用于大型的任意长度字符串,不强制要求指定 max_length 属性,  仅仅当该字段以表单显示才会使用,不会在数据库级别进行强制执行。
IntegerField:用于存储整形数据,在用于表单中验证输入的值需要时整数。
FloatField:用于存储浮点型数据
DateField 和 DateTimeField:用于存储/表示日期和日期/时间信息(分别是Python.datetime.date和datetime.datetime对象。
这些字段可以另外表明(互斥)参数
 auto_now=Ture (在每次保存模型时将该字段设置为当前日期),
 auto_now_add(仅设置模型首次创建时的日期)
 default(设置默认日期,可以被用户覆盖)。一般笔者选择的默认日期是 datetime.now。需要引用datetime模块
EmailField:用来存储和验证电子邮件地址。
FileField:用于上传文件,需要提供 upload_to 指定上传到的地方。
ImageField:和上传文件表现基本相似,会额外进行是否为图像的验证。
AutoField:是一种 IntegerField 自增的特殊类型,如果模型没有指定主键的话,此类型的主键将自动添加到模型中。
ForeignKey:外键,用于指定与另一个数据库模型的一对多关系。关系 “一” 侧是包含密钥的模型。和 flask 指定外键的方式不同。
ManyToManyField:用于指定多对多关系,例如,一本书可以有几种类型,每种类型可以包含几本书)。
在我们的图书馆应用程序中,我们将非常类似地使用它们ForeignKeys,但是可以用更复杂的方式来描述组之间的关系。
这些具有参数on_delete来定义关联记录被删除时会发生什么(例如,值models.SET_NULL将简单地设置为值NULL)。笔者用的不是很多。



通过声明 class Meta 来声明模型级别的元数据
一个模型也可以有方法,最基本的使用就是定义一个标准的 Python 类方法: __str__:

# 完整的 model
class Department(models.Model):
    d_id = models.AutoField(primary_key=True)
    d_name = models.CharField(max_length=30)
    
    class Meta:
        verbose_name = u"部门"
        verbose_name_plural = verbose_name
        
    def __str__(self):
        return 'Department<d_id=%s,d_name=%s>'%(
            self.d_id,self.d_name
        )


class Student(models.Model):
    s_id = models.AutoField(primary_key=True)
    s_name = models.CharField(max_length=30)
    department = models.ForeignKey('Department')
    course = models.ManyToManyField('Course')
    
    def __str__(self):
        return 'Student<s_id=%s,s_name=%s>'%(
            self.s_id,self.s_name
        )


class Course(models.Model):
    c_id = models.AutoField(primary_key=True)
    c_name = models.CharField(max_length=30)
    
    def __str__(self):
        return 'Course<c_id=%s,c_name=%s>'%(
            self.c_id,self.c_name
        )


class Stu_detail(models.Model):
    s_id = models.OneToOneField('Student')
    age = models.IntegerField()
    gender = models.BooleanField(default=1)
    country = models.CharField(max_length=30,null=True)
    
    def __str__(self):
        return 'Stu_detail<s_id=%s,age=%s,gender=%s,country=%s>'%(
            self.s_id,self.age,self.gender,self.country)

存数据 可以利用实例化时候存取数据 对应相应的字段,然后保存.

from django.shortcuts import render  # 引入 render 方法
from .models import Department,  Student, Course,  Stu_detail    # 引入之前配置好的 Model
 ......

读取数据..

# {BASE_DIR/apps/message/views.py}
from django.shortcuts import render
from school.models import Department, Student, Course, Stu_detail


# Create your views here.


class Index(View):
    def get(self, request):
         # 在只有两级的查询,如Student,Department之间的查询
        # Department查询Student的信息
      students = Student.objects.all()filter(d_id=int(department的id))
         # Student查询Department的信息
      department= Department.objects.all()filter(d_id=int(department的id))
        
        pass
            

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,082评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,231评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,047评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,977评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,893评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,976评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,605评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,888评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,906评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,732评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,513评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,980评论 3 301
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,132评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,447评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,027评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,232评论 2 339