# 计算机实习后端 **Repository Path**: computerexplorer/computer-internship-backend ## Basic Information - **Project Name**: 计算机实习后端 - **Description**: 北京电子科技学院2024年7月计算机实习题目A1,资产管理 使用django-drf开发 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-07-09 - **Last Updated**: 2024-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 语言为python3.12.3,使用django5.0.6开发,djangorestframework版本为3.15.2 使用了simpleUI数据库后台管理界面 ![](https://pic.imgdb.cn/item/668d5bbbd9c307b7e9916019.jpg) ![](https://pic.imgdb.cn/item/668d5df2d9c307b7e994cf05.jpg) 配置了CoreAPI文档 ![](https://pic.imgdb.cn/item/668d5c11d9c307b7e991dea1.jpg) 搭载了Silk请求监听面板 ![](https://pic.imgdb.cn/item/668d5c5cd9c307b7e9925b33.jpg) ![](https://pic.imgdb.cn/item/668d5ce9d9c307b7e99339a4.jpg) ![](https://pic.imgdb.cn/item/668d5d39d9c307b7e993b445.jpg) 实现了数据分页 ![](https://pic.imgdb.cn/item/668d5e4bd9c307b7e99551b3.jpg) 开发笔记 QuerySet API 增删改 ``` all() exists() values() # dict values_list() # list[tuple] get(条件) create("字段"=值) get_or_create("字段"=值) update_or_create("字段"=值) ``` QuerySet API 数据分析 ``` annotate(别名=Count("字段")) # 生成SQL并执行,可接aggregate alias() # 类似于annotate,但生成SQL不执行 distinct() # 唯一值 aggregate(别名1=Count("字段"), 别名2=Sum("字段")) # 聚合 order_by("-字段1","字段2") # 按字段1降序,再按字段2升序 order_by("?") # 乱序 order_by( Coalesce("字段","NULL时默认值").desc() ) # desc/asc 排序 reverse() filter() exclude() select_related("字段") # 指明将要关联的实体,提升性能,可不加 prefetch_related("字段") # 类似select_related,适用于ManyToManyField defer("字段") # 不再预取该字段所有值,需要时再逐个查询 only("字段") # 立刻预取该字段,而不取其他字段 ``` 条件查询 ``` filter(条件) & filter(条件) filter(条件) | filter(条件) filter( Q(条件) | Q(条件)) filter(条件) ^ filter(条件) filter( Q(条件)^ Q(条件)) LessThan(F("字段") ,值) 字段__gt=F("字段") 字段__gte=值 字段__lt=值 字段__lte=值 Lower("字段") 字段__exact=值 字段__iexact=值 字段__containes="值" 字段__icontaines="值" 字段__startwith="值" 字段__istartwith="值" 字段__endwith="值" 字段__iendwith="值" 字段__regex=r"值" 字段__iregex=r"值" 字段__in=(值,) 字段__range=(值, 值) 字段__date=datatime.date(YYYY,MM,dd) 字段__date__year=YYYY 字段__date__quarter=q # 1-4 字段__date__month=MM 字段__date__week=WW 字段__date__week_day=d # 1-7 字段__date__day=dd 字段__date__time=datetime.time(HH, mm) 字段__date__hour=HH 字段__date__minute=mm 字段__date__second=SS 字段__date__gt=datetime.date(YYYY,MM,dd) 字段__关联实体的字段 ExpressionWrapper( output_field=DateTimeField() )# 提供类型 ```