当前位置:
首页 > Python基础教程 >
-
Django多条件筛选查询(3)
return mark_safe(temp.format(href=href))
def active(request_path, item, index):
url_part_list = request_path.split('-')
# 下面判断中,前面表示 event-0-1-5-1-,后面表示 3.html
if url_part_list[index] == str(item['id']) or url_part_list[index] == str(item['id']) + '.html':
temp = '''
<li class="nav-item">
<a href="{href}" class="nav-link active">{name}</a>
</li>
'''
else:
temp = '''
<li class="nav-item">
<a href="{href}" class="nav-link">{name}</a>
</li>
'''
if index == 5:
# 第五组有后缀.html,需单独处理
url_part_list[index] = str(item['id']) + '.html'
else:
url_part_list[index] = str(item['id'])
href = '-'.join(url_part_list)
if index == 1:
"""
event-1-0-0-0-0.html
event-2-0-0-0-0.html
event-3-0-0-0-0.html
"""
return mark_safe(temp.format(href=href, name=item['username']))
if index == 2:
return mark_safe(temp.format(href=href, name=item['status_tag']))
if index == 3:
return mark_safe(temp.format(href=href, name=item['level_tag']))
if index == 4:
return mark_safe(temp.format(href=href, name=item['category_name']))
if index == 5:
return mark_safe(temp.format(href=href, name=item['project_name']))
两级分类筛选
模型设计
from django.db import models
from django.utils.timezone import now
class GoodsTag(models.Model):
name = models.CharField(max_length=64, verbose_name='标签名称')
def __str__(self):
return self.name
class Meta:
ordering = ['name', ]
verbose_name = '商品标签' # 后台显示模型名称
verbose_name_plural = verbose_name
# 智能家居、手机、电视、电脑
class FirstCategory(models.Model):
name = models.CharField(max_length=64, verbose_name='分类名称')
def __str__(self):
return self.name
class Meta:
ordering = ['name', ]
verbose_name = '一级分类'
verbose_name_plural = verbose_name
# 小米6、小米8、红米10
class SubCategory(models.Model):
name = models.CharField(max_length=64, verbose_name='分类名称')
first_category = models.ForeignKey(FirstCategory, related_name='sub_categories', verbose_name='上级分类')
def __str__(self):
return self.name
class Meta:
ordering = ['name', ]
verbose_name = '二级分类'
verbose_name_plural = verbose_name
class GoodsInfo(models.Model):
STATUS_CHOICES = (
(1, '上架'),
(2, '下架'),
)
title = models.CharField(max_length=100, verbose_name='标题')
content = models.TextField(blank=True, null=True, verbose_name='正文')
image = models.FileField(upload_to='images/goods/%Y/%m', blank=True, null=True, verbose_name='图片')
status = models.IntegerField(choices=STATUS_CHOICES, default=1, verbose_name='状态')
created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
publish_time = models.DateTimeField(blank=True, null=True, default=now, verbose_name='发布时间')
updated_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
category = models.ForeignKey(SubCategory, on_delete=models.CASCADE, related_name='goods_info', verbose_name='所属分类')
tags = models.ManyToManyField(GoodsTag, blank=True, verbose_name='标签集合')
def __str__(self):
return self.title