True/False字段,默认值为None
sele_out = models.BooleanField(default=False, verbose_name='售空')
字符串字段
name = models.CharField(max_length=20, verbose_name='书名')
日期字段
pud_date = models.DateField(verbose_name='发布时间')
十进制浮点型字段
# max_digits=加上小数点的总数 decimal_places=小数点后的数量
height = models.DecimalField(max_digits=5, decimal_places:2, verbose_name="身高")
浮点型字段
price = models.FloatField(verbose_name="价格")
整型字段
age = models.IntegerField(verbose_name="年龄")
如果该值为True
,将在数据库中将控制存储为NULL
字符串字段CharField
与TextField
要避免使用null
,因为空值字符串将存储空字符串(“”),而不是null
值。
对于字符串类型的数据字段,大多数情况下,django
使用空字符串代表空值
如果该值为True
,则在验证时该字段值可以为空;
null
为数据库存储层面可以为空,而blank
为表单验证层面可以填写空值
一个二元组的列表或元组;
元组中第一个值为真正在数据库中存储的值,第二个值为该选项的描述
该值一旦被设定,表单样式会显示选择框,而不是标准的文本框,选择框内的选项为choices
中的元组
在模型类下
# 元类
class Meta:
verbose_name = '书籍信息' # admin名字
verbose_name_plural = verbose_name # 取掉"s"
db_table = 'bookinfo' # 数据库表名
# 默认查询输出
def __str__(self):
return self.name
需要先导包
from books.models import Bookinfo
Bookinfo.objects.create(
name='Js',
pud_date='2010-12-12',
read_count=500,
comment_count=200,
sele_out=False,
)
Bookinfo.objects.filter(id=1)
Bookinfo.objects.fiter(name='python').update(name='html')
# 修改
book = Bookinfo.objects.get(name='Js')
book.read_count = 666
book.save()
# 查询编号为1的图书
Bookinfo.objects.get(id__exact=1)
# 查询书名包含'湖'的图书
Bookinfo.objects.filter(name__contains='湖')
# 查询书名以'部'结尾的图书
Bookinfo.objects.filter(name__endswith='部')
# 查询书名为空的图书
Bookinfo.objects.filter(name__isnull=True)
# 查询编号为1或3或5的图书
Bookinfo.objects.filter(id__in=[1,3,5])
# 查询编号大于3的图书
Bookinfo.objects.filter(id__gt=3)
# 查询1980年发表的图书
Bookinfo.objects.filter(pud_date__year='1980')
# 查询1990年1月1日后发表的图书
Bookinfo.objects.filter(pud_date__gt='1990-01-01')
需要导入
from django.db.models import Q
# 查询阅读量大于20,并且编号小于3的图书。
Bookinfo.objects.filter(read_count__gt=20, id__lt=3)
from django.db.models import Q
Bookinfo.objects.filter(Q(read_count__gt=20) & Q(id__lt=3))
# 查询阅读量大于20,或编号小于3的图书。
Bookinfo.objects.filter(Q(read_count__gt=20) | Q(id__lt=3))
# 查询编号不等于3的图书。
Bookinfo.objects.exclude(id=3)
Bookinfo.objects.filter(~Q(id=3))
from django.db.models import F
# 查询阅读量大于等于评论量的图书。
from django.db.models import F # 字段和字段比较用F
Bookinfo.objects.filter(read_count__gt=F('comment_count'))
# 查询阅读量大于2倍评论量的图书。
Bookinfo.objects.filter(read_count__gt=F('comment_count')*2)
需要导入
from django.db.models import Max, Min, Sum, Count, Avg
# 查询图书的总阅读量。
Bookinfo.objects.aggregate(Sum('read_count'))
# 查询图书总数。
Bookinfo.objects.count()
Bookinfo.objects.aggregate(Count('id'))
#
# 查询所有书籍信息平按照阅读量排序。
Bookinfo.objects.all().order_by('read_count')
Bookinfo.objects.all().order_by('-read_count')