主要分为下面几步:
1.菜品类别信息数据表:category
2.定义模型Model类
3.编辑视图文件views
4.项目urls路由信息配置
5.编写模板文件
=========================================================================
(1). 菜品类别信息数据表:category
- 在数据库
osdb
中创建category
表,若此表已存在请跳过
CREATE TABLE `category` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '菜品分类id',
`shop_id` int(11) DEFAULT NULL COMMENT '店铺id',
`name` varchar(50) DEFAULT NULL COMMENT '分类名称',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:1正常 9删除',
`create_at` datetime DEFAULT NULL COMMENT '添加时间',
`update_at` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
一个类别可能属于很多店铺的,所以是一对多的关系,所以在字段里有店铺id
(2). 定义模型Model类
- 进入
myadmin
应用目录中编辑:myobject/myadmin/models.py
模型文件
from django.db import models
#菜品分类信息模型
class Category(models.Model):
shop_id = models.IntegerField() #店铺id
name = models.CharField(max_length=50)#分类名称
status = models.IntegerField(default=1) #状态:1正常/9删除
create_at = models.DateTimeField(default=datetime.now) #创建时间
update_at = models.DateTimeField(default=datetime.now) #修改时间
class Meta:
db_table = "category" # 更改表名
因为这个表格,不需要对数据输出,所以这个表格没有定义转成字典的方法。
(3). 编辑视图文件
- 新建视图文件:myobject/myadmin/views/category.py 视图文件,并进行编辑
from django.shortcuts import render
from django.http import HttpResponse
from django.http import JsonResponse
from django.core.paginator import Paginator
from datetime import datetime
from myadmin.models import Category,Shop
# 菜品分类信息
def index(request,pIndex=1):
'''浏览信息'''
smod = Category.objects
mywhere=[]
list = smod.filter(status__lt=9)
# 获取、判断并封装关keyword键搜索
kw = request.GET.get("keyword",None)
if kw:
# 查询店铺名称中只要含有关键字就可以
list = list.filter(name__contains=kw)
mywhere.append("keyword="+kw)
# 获取、判断并封装状态status搜索条件
status = request.GET.get('status','')
if status != '':
list = list.filter(status=status)
mywhere.append("status="+status)
list = list.order_by("id") #对id排序
#执行分页处理
pIndex = int(pIndex)
page = Paginator(list,10) #以10条每页创建分页对象
maxpages = page.num_pages #最大页数
#判断页数是否越界
if pIndex > maxpages:
pIndex = maxpages
if pIndex < 1:
pIndex = 1
list2 = page.page(pIndex) #当前页数据
plist = page.page_range #页码数列表
#上面查出当前菜品类别的信息,然后下面是关联店铺查询
#遍历信息,并获取对应的商铺名称,以shopname名封装
for vo in list2:
sob = Shop.objects.get(id=vo.shop_id) #这是取出了店铺的名称
vo.shopname = sob.name
#封装信息加载模板输出
context = {"categorylist":list2,'plist':plist,'pIndex':pIndex,'maxpages':maxpages,'mywhere':mywhere}
return render(request,"myadmin/category/index.html",context)
def loadCategory(request,sid):
clist = Category.objects.filter(status__lt=9,shop_id=sid).values("id","name")
#返回QuerySet对象,使用list强转成对应的菜品分类列表信息
return JsonResponse({'data':list(clist)})
def add(request):
'''加载添加页面'''
'''获取当前所有店铺信息的id和name字段'''
slist = Shop.objects.values("id","name")
context={"shoplist":slist}
ret