博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Django的模型

Posted on 2017-07-12 17:39  开飞机的贝塔  阅读(133)  评论(0编辑  收藏  举报

Django的模型相当于数据库的一张,模型类的实例对象相当于表中的一行内容

Django提供了多种创建对象的方式,常用如下:

通过create()方法
1、Person.objects.create(name=name,age=age)
通过实例化对象时来创建
2、p = Person(name="WZ", age=23)

    p.save()
通过实例化对象和对象属性赋值来创建
3、p = Person(name="TWZ")

    p.age = 23

    p.save()
通过get_or_create()方法
4、Person.objects.get_or_create(name="WZT", age=23)
这种方式可以有效地避免对象重复问题,推荐使用!

 对于获取对象,Django同样提供了多种方式供给开发者选择,常用的如下:

通过all()方法
1、User.objects.all()
通过get()方法
2、User.objects.get(字段=值)
通过filter()方法
3、User.objects.filter(字段__contains=值) 
contains前双下划线
通过values_list()方法
4、User.objects.values_list(字段1,字段2)
注:如果只需要一个字段,第二个参数传入flat=True。
通过values()
5、User.objects.values(字段1,字段2)
这个返回的是一个类字典对象
通过extra()方法
6、User.objects.extra(select={'别名':'原始名称'})
注:可以使用defer('原始名称')来避免重复查询,可以使用query属性查看具体的SQL语句。

 Django模型类Field types总结:

常用参数:
null:放一个NULL作为字段的默认值
blank:可以为空值
default:默认的值
choices:将文本框替换为选择框
例如:
rom django.db import models
class Person(models.Model):
    GENDER_CHOICES = (
        (u'M', u'Male'),
        (u'F', u'Female'),
    )
    name = models.CharField(max_length=60)
    gender = models.CharField(max_length=2, choices=GENDER_CHOICES)

注:二元元组的第一个参数是会存储到数据库的数据,第二个元素是在admin中显示的数据。
primary_key:设置主键
unique:该字段在该表中唯一
verbose_name:就是字段的名称,默认使用字段名为名称,如果有下划线会被Django替换为空格。