__file__ 指的是文件本身
os.path.abspath(__file__) 获取文件的绝对路径,包含文件本身
os.path.dirname(__file__) 获取文件所在的路径,不包含文件本身
os.path.join(,) 两个参数,把两个路径合成一个新的路径,第一个参数带有/
为了让 admin 界面管理某个数据模型,我们需要先注册该数据模型到 admin。
admin.site.register(Test)
我们可以自定义管理页面,来取代默认的页面。比如上面的 "add" 页面。
class ContactAdmin(admin.ModelAdmin):
fields = ('name', 'email')
内敛显示
class TagInline(admin.TabularInline):
model = Tag
class ContactAdmin(admin.ModelAdmin):
inlines = [TagInline] # Inline
列表页的显示
我们也可以自定义该页面的显示,比如在列表中显示更多的栏目,只需要在 ContactAdmin 中增加 list_display 属性
搜索功能在管理大量记录时非常有,我们可以使用 search_fields 为该列表页增加搜索栏
class ContactAdmin(admin.ModelAdmin):
list_display = ('name','age', 'email') # list
search_fields = ('name',)
- 查找:使用 all() 方法来查询所有内容。返回的是 QuerySet 类型数据,类似于 list,里面放的是一个个模型类的对象,可用索引下标取出模型类的对象。没有负索引
- filter() 方法用于查询符合条件的数据。返回的是 QuerySet 类型数据,类似于 list,里面放的是满足条件的模型类的对象,可用索引下标取出模型类的对象。
- exclude() 方法用于查询不符合条件的数据。返回的是 QuerySet 类型数据,类似于 list,里面放的是不满足条件的模型类的对象,可用索引下标取出模型类的对象。
- get() 方法用于查询符合条件的返回模型类的对象符合条件的对象只能为一个,如果符合筛选条件的对象超过了一个或者没有一个都会抛出错误。
- order_by() 方法用于对查询结果进行排序。返回的是 QuerySet类型数据,类似于list,里面放的是排序后的模型类的对象,可用索引下标取出模型类的对象。
- reverse() 方法用于对查询结果进行反转。返回的是 QuerySe t类型数据,类似于 list,里面放的是反转后的模型类的对象,可用索引下标取出模型类的对象。
- count() 方法用于查询数据的数量返回的数据是整数。
- first() 方法返回第一条数据返回的数据是模型类的对象也可以用索引下标 [0]。
- last() 方法返回最后一条数据返回的数据是模型类的对象不能用索引下标 [-1],ORM 没有逆序索引。
- exists() 方法用于判断查询的结果 QuerySet 列表里是否有数据。返回的数据类型是布尔,有为 true,没有为 false。注意:判断的数据类型只能为 QuerySet 类型数据,不能为整型和模型类的对象。
- values() 方法用于查询部分字段的数据。返回的是 QuerySet 类型数据,类似于 list,里面不是模型类的对象,而是一个可迭代的字典序列,字典里的键是字段,值是数据。
- values_list() 方法用于查询部分字段的数据。返回的是 QuerySet 类型数据,类似于 list,里面不是模型类的对象,而是一个个元组,元组里放的是查询字段对应的数据。
- filter() 方法基于双下划线的模糊查询(exclude 同理)。注意:filter 中运算符号只能使用等于号 = ,不能使用大于号 > ,小于号 < ,等等其他符号。
1. __in 用于读取区间,= 号后面为列表 。
__gt 大于号 ,= 号后面为数字。
__gte 大于等于,= 号后面为数字。
__lt 小于,=号后面为数字。
__lte 小于等于,= 号后面为数字。
__range 在 ... 之间,左闭右闭区间,= 号后面为两个元素的列表。
__contains 包含,= 号后面为字符串。
__icontains 不区分大小写的包含,= 号后面为字符串。
__startswith 以指定字符开头,= 号后面为字符串。
__endswith 以指定字符结尾,= 号后面为字符串。
__year __month __day 是 DateField 数据类型的年份,= 号后面为数字。
删除
使用 QuerySet 类型数据.delete()(推荐)。返回值:元组,第一个元素为受影响的行数。
books=models.Book.objects.filter(pk__in=[1,2]).delete()
修改
QuerySet 类型数据.update(字段名=更改的数据)(推荐)。返回值:整数,受影响的行数
books = models.Book.objects.filter(pk__in=[7,8]).update(price=888)