- 1. 模型类字段
- 1.1 BooleanField
- 1.2 CharField
- 1.3 DateField
- 1.4 DecimalField
- 1.5 FloatField
- 1.6 IntegerField
- 2. 字段属性
- null
- blank
- choices
- 3. 设置admin名和表名
- 4. 增删改查
- 4.1 添加
- 4.2 删除
- 4.3 修改
- 4.4 查询
- Q查询
- F查询
- 高级字
True/False字段,默认值为None
sele_out = models.BooleanField(default=False, verbose_name='售空')1.2 CharField
字符串字段
name = models.CharField(max_length=20, verbose_name='书名')1.3 DateField
日期字段
pud_date = models.DateField(verbose_name='发布时间')1.4 DecimalField
十进制浮点型字段
# max_digits=加上小数点的总数 decimal_places=小数点后的数量 height = models.DecimalField(max_digits=5, decimal_places:2, verbose_name="身高")1.5 FloatField
浮点型字段
price = models.FloatField(verbose_name="价格")1.6 IntegerField
整型字段
age = models.IntegerField(verbose_name="年龄")2. 字段属性 null
如果该值为True,将在数据库中将控制存储为NULL
字符串字段CharField与TextField要避免使用null,因为空值字符串将存储空字符串(“”),而不是null值。
对于字符串类型的数据字段,大多数情况下,django使用空字符串代表空值
blank
如果该值为True,则在验证时该字段值可以为空;
null为数据库存储层面可以为空,而blank为表单验证层面可以填写空值
choices
一个二元组的列表或元组;
元组中第一个值为真正在数据库中存储的值,第二个值为该选项的描述
该值一旦被设定,表单样式会显示选择框,而不是标准的文本框,选择框内的选项为choices中的元组
3. 设置admin名和表名在模型类下
# 元类
class Meta:
verbose_name = '书籍信息' # admin名字
verbose_name_plural = verbose_name # 取掉"s"
db_table = 'bookinfo' # 数据库表名
# 默认查询输出
def __str__(self):
return self.name
4. 增删改查
需要先导包
from books.models import Bookinfo4.1 添加
Bookinfo.objects.create(
name='Js',
pud_date='2010-12-12',
read_count=500,
comment_count=200,
sele_out=False,
)
4.2 删除
Bookinfo.objects.filter(id=1)4.3 修改
Bookinfo.objects.fiter(name='python').update(name='html') # 修改 book = Bookinfo.objects.get(name='Js') book.read_count = 666 book.save()4.4 查询
# 查询编号为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')Q查询
需要导入
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))F查询
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')



