- 1ORM增删改查
- 1.1增
- 1.2删
- 1.3改
- 1.3.1修改一条数据
- 1.3.2修改多条数据
- 1.4查
- 1.4.1filter过滤
- 2url传参
- 3admin管理后台
- 3.2admin管理后台快速美化
- 3.3admin管理后台操作?
- 3.3.1修改管理后台header显示名称,APP名称显示中文(自定义)
- 3.3.2注册模型(数据表)
- 3.3.3Model设置
- 3.3.4逻辑删除 / 修改商品状态
user = User.objects.get(id=1) user.username = 'nick' user.is_active = True user.save()1.3.2修改多条数据
User.objects.filter(id=1).update(username="nick",is_active=True)1.4查 1.4.1filter过滤
1.__contains(包含)
User.objects.filter(name__contains="张") # 查询名字包含张的用户
2.不等于
User.objects.filter(~Q(status=9)) # 查询状态不为9的用户2url传参
http://localhost:8000/url?param1=value1¶m2=value2¶m3=value3
# 在views.py中提取参数
param = request.GET.get('param1',None) # request.GET.get('param1','')
3admin管理后台
参考
Django 管理员界面 https://www.cainiaojc.com/django/django-admin-interface.html
在项目目录运行以下代码后,即可直接通过localhost:8000/admin进入管理员后台。
python manage.py createsuperuser python manage.py migrate3.2admin管理后台快速美化
1.下载依赖
清华源: https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣源: http://pypi.douban.com/simple 阿里源: http://mirrors.aliyun.com/pypi/simple 中国科学技术大学源: http://pypi.mirrors.ustc.edu.cn/simple/ pip install django-simpleui -i https://pypi.tuna.tsinghua.edu.cn/simple
2.配置settings.py,然后重启
INSTALLED_APPS = [ 'simpleui', 'django.contrib.admin', .... ]3.3admin管理后台操作? 3.3.1修改管理后台header显示名称,APP名称显示中文(自定义)
#blog/admin.py
admin.site.site_header = 'Blog Administration'
#blog/app.py
from django.apps import AppConfig
class AppConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'app'
verbose_name = 'APP名称'
3.3.2注册模型(数据表)
#blog/admin.py
from django.contrib import admin from MySelfAPP.models import Article # Register your models here. admin.site.register(Article) ...3.3.3Model设置
1.名称显示中文
class User(models.Model):
# 自动设置自增主键列:id
userName = models.CharField('用户昵称',max_length=50) # 加入'用户昵称'属性,管理端即可将该列名称显示为中文
grade = models.ForeignKey(to=Grade, on_delete=models.CASCADE,null=True)
def toDict(self):
return {
'id':self.id,
'userName':self.userName,
}
class Meta:
db_table = 'user' # 表名
# 复数形式,如果只设置verbose_name,在Admin会显示为“用户表s”
verbose_name_plural = "用户表"
# verbose_name = "用户表"
2.自定义数据表显示选项
class ArticleAdmin(admin.ModelAdmin):
'''设置列表可显示的字段'''
list_display = ['title', 'author', 'status', 'mod_date']
'''设置过滤选项'''
list_filter = ['status', 'pub_date']
'''添加搜索框'''
search_fields = ['author']
'''每页显示条目数'''
list_per_page = 5
'''设置可编辑字段'''
list_editable = ['status']
'''按日期月份筛选'''
# date_hierarchy = 'pub_date' # 此方法不可用
'''按发布日期排序'''
ordering = ['-mod_date']
admin.site.register(Article, ArticleAdmin)
3.显示外键字段
# models.py
class User(models.Model):
userName = models.CharField('用户昵称',max_length=50) # 加入'用户昵称'属性,管理端即可将该列名称显示为中文
grade = models.ForeignKey(to=Grade, on_delete=models.CASCADE,null=True)
class Meta:
db_table = 'user' # 表名
verbose_name_plural = "用户表"
# 在admin中可直接显示外键对象的字段
def grade_(self):
return self.grade.gradename
grade_.short_description = '班级'
# admin.py
class UserAdmin(admin.ModelAdmin):
list_display = ['grade_']
'''
# 方法二:直接在UserAdmin中进行设置,display方式同上不变
def grade_(self, obj):
return obj.grade.gradename
grade_.short_description = '所在班级'
'''
3+.若未设置外键,可根据查询结果进行显示
#admin.py class UserAdmin(admin.ModelAdmin): list_display = ['grade_'] def grade_(self,obj): return Grade.objects.filter(id=obj.gradeID).first().gradeName grade_.short_description='所在班级'
4.根据外键字段进行排序
5.根据状态不同,显示不同的状态标签
3.3.4逻辑删除 / 修改商品状态
# admin.py
class GoodsAdmin(admin.ModelAdmin):
'''添加功能按钮'''
actions = ['logic_delete']
# 添加逻辑删除功能
def logic_delete(self,request,queryset): # 必须加上request字段,接口内部应该需要接收页面请求
queryset.update(goodsStatus=9)
logic_delete.short_description = '逻辑删除'



