django框架的基础知识点《叁》
===================数据库操作======================
-------------------》增加:
方案一:根据模型类创建对象,为属性赋值,对象.save()
方案二:模型类.objects.create(属性=值,...)==>返回对象(推荐使用此方法)
---------------------》查询
属性_运算符=值
F对象===》在等号的右侧出现模型类的属性
Q对象===》实现逻辑与,逻辑或,逻辑非的运算
----------------------》关系属性
图书-英雄的关系为1对多,在多的一端,即英雄类中定义了外键hbook,英雄模型类中,默认
有一个属性hbook_id用来关联对象的主键
在图书模型类中,英雄模型类中定义外键后,django会为图书增加一个属性:heroinfo_set,表示某个图书对象关联的英雄
------------------------》修改
方案一:1.查询对象,2.为属性赋值,3.对象.save()
方案二: 1.模型类.objects.filter(条件).update(属性=值)
如果修改一个对象,推荐使用方案一,如果修改多个对象,推荐使用方案二
-------------------------》删除
方案一:1.查询对象
2.对象.delete()
方案二:模型类.objects.filter(条件).delete()
如果删除一个对象,则使用方案一,如果删除多个对象,则使用方案二
=======================查询集======================
作用:优化,减少与数据库的交互次数
当调用all(),filter(),order_by()时,返回查询集对象而不会到数据库中查询
get()=====》立即到数据库中查询数据
特性:
惰性执行,缓存
======================后台管理admin==============
==================后台管理admin
------注册
打开admin.py文件
admin.site.register(模型类)
------列表页属性
list_per_page = 10 # 分页中的页大小
actions_on_top = True # 设置动作在顶部显示
actions_on_bottom = True # 设置动作在底部显示
list_display = ['id', 'btitle', 'bpub_date', 'pub_date'] # 表格
list_filter = ['bread', 'bcomment'] # 过滤,快速查询
search_fields = ['btitle'] # 查询
------编辑页属性
fieldsets=(#分组
(分组名称,{'fields':[属性名称]}),
(),
...
)
inlines=[]#内嵌
------站点信息设置
3个标题
------上传图片
1.在settings.py中配置
STATIC_URL = '/static/'
# 查找静态文件的目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'media')
]
# 指定上传文件保存的目录
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
2.python manage.py makemigrations
3.修改models.py,为BookInfo增加image字段
image = models.ImageField(upload_to='books', null=True)
4.python manage.py makemigrations
5.python manage.py migrate