zoukankan      html  css  js  c++  java
  • 组合搜索

    一:

    >>>models
    
    class Direction(models.Model):
        name = models.CharField(max_length=32,verbose_name='名称')
    
        classification = models.ManyToManyField('Classification')
    
        class Meta:
            verbose_name_plural='方向'
    
        def __str__(self):
            return self.name
    
    class Classification(models.Model):
        name = models.CharField(max_length=32,verbose_name='名称')
    
        class Meta:
            verbose_name_plural = '分类'
    
        def __str__(self):
            return self.name
    
    class Level(models.Model):
        title = models.CharField(max_length=32)
    
        class Meta:
            verbose_name_plural = '难度级别'
    
        def __str__(self):
            return self.title
    
    
    class Video(models.Model):
        status_choice = (
            (1,'下线'),
            (2,'上线'),
        )
        status = models.IntegerField(verbose_name='状态',choices=status_choice,default=1)
        level = models.ForeignKey(Level,on_delete=True)
        classification = models.ForeignKey('Classification',on_delete=True,null=True,blank=True)
    
        title = models.CharField(max_length=32,null=True)
        class Meta:
            verbose_name_plural = '视频'
    
        def __str__(self):
            return self.title
    
    >>>urls
    
    re_path('aselect/-(?P<classification_id>(d+))-(?P<level_id>(d+))-(?P<status>(d+))$', views.aselect),
    
    >>>html
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .condiction a{
                display: inline-block;
                padding: 5px 8px;
                border: 1px solid black;
                text-decoration: none;
            }
            .condiction a.active{
                background-color: #eb9316;
                color: white;
            }
        </style>
    </head>
    <body>
    <div class="condiction">
    <h1>筛选</h1>
    <div>
        {% if kwargs.classification_id == 0 %}
            <a class="active" href="/aselect/-0-{{ kwargs.level_id }}-{{ kwargs.status }}">全部</a>
        {% else %}
            <a href="/aselect/-0-{{ kwargs.level_id }}-{{ kwargs.status }}">全部</a>
        {% endif %}
    
        {% for item in class_list %}
            {% if item.id == kwargs.classification_id %}
                <a class="active" href="/aselect/-{{ item.id }}-{{ kwargs.level_id }}-{{ kwargs.status }}">{{ item.name }}</a>
            {% else %}
                <a href="/aselect/-{{ item.id }}-{{ kwargs.level_id }}-{{ kwargs.status }}">{{ item.name }}</a>
            {% endif %}
        {% endfor %}
    </div>
    
    <div>
        {% if kwargs.level_id == 0 %}
            <a class="active" href="/aselect/-{{ kwargs.classification_id }}-0-{{ kwargs.status }}">全部</a>
        {% else %}
            <a href="/aselect/-{{ kwargs.classification_id }}-0-{{ kwargs.status }}">全部</a>
        {% endif %}
    
        {% for item in level_list %}
            {% if item.id == kwargs.level_id %}
                <a class="active" href="/aselect/-{{ kwargs.classification_id }}-{{ item.id }}-{{ kwargs.status }}">{{ item.title }}</a>
            {% else %}
                <a href="/aselect/-{{ kwargs.classification_id }}-{{ item.id }}-{{ kwargs.status }}">{{ item.title }}</a>
            {% endif %}
        {% endfor %}
    </div>
    
    
    <div>
        {% if kwargs.status == 0 %}
            <a class="active" href="/aselect/-{{ kwargs.classification_id }}-{{ kwargs.level_id }}-0">全部</a>
        {% else %}
            <a href="/aselect/-{{ kwargs.classification_id }}-{{ kwargs.level_id }}-0"}>全部</a>
        {% endif %}
    
        {% for item in status_list%}
            {% if kwargs.status == item.id %}
                <a class="active" href="/aselect/-{{ kwargs.classification_id }}-{{ kwargs.level_id }}-{{ item.id }}">{{ item.name }}</a>
            {% else %}
                <a href="/aselect/-{{ kwargs.classification_id }}-{{ kwargs.level_id }}-{{ item.id }}">{{ item.name }}</a>
            {% endif %}
        {% endfor%}
    
    </div>
    
    
    <h2>结果</h2>
    <div>
        {% for row in video_list %}
            <div>{{ row.title }}</div>
        {% endfor %}
    </div>
    </div>
    
    </body>
    </html>
    
    >>>views
    
    def aselect(request,*args,**kwargs):
        condition = {}
        for k,v in kwargs.items():
            temp = int(v)
            kwargs[k] = temp
            if temp:
                condition[k] = temp
        video_list = Video.objects.filter(**condition)
        class_list = Classification.objects.all()
        level_list = Level.objects.all()
        status_list = list(map(lambda x:{'id':x[0],'name':x[1]},Video.status_choice))
        return render(request,'aselect.html',locals())

     二:

    >>>models
    
    class Direction(models.Model):
        name = models.CharField(max_length=32,verbose_name='名称')
    
        classification = models.ManyToManyField('Classification')
    
        class Meta:
            verbose_name_plural='方向'
    
        def __str__(self):
            return self.name
    
    class Classification(models.Model):
        name = models.CharField(max_length=32,verbose_name='名称')
    
        class Meta:
            verbose_name_plural = '分类'
    
        def __str__(self):
            return self.name
    
    class Level(models.Model):
        title = models.CharField(max_length=32)
    
        class Meta:
            verbose_name_plural = '难度级别'
    
        def __str__(self):
            return self.title
    
    
    class Video(models.Model):
        status_choice = (
            (1,'下线'),
            (2,'上线'),
        )
        status = models.IntegerField(verbose_name='状态',choices=status_choice,default=1)
        level = models.ForeignKey(Level,on_delete=True)
        classification = models.ForeignKey('Classification',on_delete=True,null=True,blank=True)
    
        title = models.CharField(max_length=32,null=True)
        class Meta:
            verbose_name_plural = '视频'
    
        def __str__(self):
            return self.title
    
    >>>urls
    from django.urls import re_path
    
    re_path('aselect2/-(?P<direction_id>(d+))-(?P<classification_id>(d+))-(?P<level_id>(d+))$', views.aselect2,name='aselect2'),
    
    >>>html
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .condiction a{
                display: inline-block;
                padding: 5px 8px;
                border: 1px solid black;
                text-decoration: none;
            }
            .condiction a.active{
                background-color: #eb9316;
                color: white;
            }
        </style>
    </head>
    <body>
    <div class="condiction">
    <h1>筛选</h1>
    <div>
        {% if kwargs.direction_id == 0 %}
            <a class="active" href="{% url "aselect2" direction_id=0 classification_id=kwargs.classification_id level_id=kwargs.level_id %}">全部</a>
        {% else %}
            <a href="{% url "aselect2" direction_id=0 classification_id=kwargs.classification_id level_id=kwargs.level_id %}">全部</a>
        {% endif %}
        {% for item in direction_list %}
            {% if item.id == kwargs.direction_id %}
                <a class="active" href="{% url "aselect2" direction_id=item.id classification_id=kwargs.classification_id level_id=kwargs.level_id %}">{{ item.name}}</a>
            {% else %}
                <a href="{% url "aselect2" direction_id=item.id classification_id=kwargs.classification_id level_id=kwargs.level_id %}">{{ item.name}}</a>
            {% endif %}
        {% endfor %}
    </div>
    
    
    <div>
        {% if kwargs.classification_id == 0 %}
            <a class="active" href="/aselect2/-{{ kwargs.direction_id }}-0-{{ kwargs.level_id }}">全部</a>
        {% else %}
            <a href="/aselect2/-{{ kwargs.direction_id }}-0-{{ kwargs.level_id }}">全部</a>
        {% endif %}
    
        {% for item in class_list %}
            {% if item.id == kwargs.classification_id %}
                <a class="active" href="/aselect2/-{{ kwargs.direction_id }}-{{ item.id }}-{{ kwargs.level_id }}">{{ item.name}}</a>
            {% else %}
                <a href="/aselect2/-{{ kwargs.direction_id }}-{{ item.id }}-{{ kwargs.level_id }}">{{ item.name}}</a>
            {% endif %}
        {% endfor %}
    </div>
    
    <div>
        {% if kwargs.level_id == 0 %}
            <a class="active" href="/aselect2/-{{ kwargs.direction_id }}-{{ kwargs.classification_id }}-0">全部</a>
        {% else %}
            <a href="/aselect2/-{{ kwargs.direction_id }}-{{ kwargs.classification_id }}-0">全部</a>
        {% endif %}
    
        {% for item in level_list %}
            {% if item.id == kwargs.level_id %}
                <a class="active" href="/aselect2/-{{ kwargs.direction_id }}-{{ kwargs.classification_id }}-{{ item.id }}">{{ item.title}}</a>
            {% else %}
                <a href="/aselect2/-{{ kwargs.direction_id }}-{{ kwargs.classification_id }}-{{ item.id }}">{{ item.title}}</a>
            {% endif %}
        {% endfor %}
    </div>
    </div>
    
    <div>
        <h1>结果</h1>
        {% for row in video_list %}
            <div>{{ row.title }}</div>
        {% endfor %}
    </div>
    </body>
    </html>
    
    def aselect2(request,*args,**kwargs):
        condition = {}
        for k,v in kwargs.items():
            temp = int(v)
            kwargs[k] = temp
    
        direction_id = kwargs.get('direction_id')
        classification_id = kwargs.get('classification_id')
        level_id = kwargs.get('level_id')
    
        direction_list = Direction.objects.all()
        level_list = Level.objects.all()
    
        if direction_id == 0:
            class_list = Classification.objects.all()
            if classification_id == 0:
                pass
            else:
                condition['classification_id'] = classification_id
        else:
            direction_obj = Direction.objects.filter(id=direction_id).first()
            class_list = direction_obj.classification.all()
            v_list = direction_obj.classification.all().values_list('id')
    
            if not v_list:
                classification_id__in = []
            else:
                calssification_id_list = list(zip(*v_list))[0]
            if classification_id == 0:
                condition['classification_id__in'] = calssification_id_list
            else:
                if classification_id in calssification_id_list:
                    condition['classification_id'] = classification_id
                else:
                    kwargs['classification_id'] = 0
                    condition['classification_id__in'] = calssification_id_list
    
        if level_id == 0:
            pass
        else:
            condition['level_id'] = level_id
    
        level_list = Level.objects.all()
    
        video_list = Video.objects.filter(**condition)
    
        return render(request,'aselect2.html',locals())
  • 相关阅读:
    python 数据分析3
    python 数据分析2
    Python 数据分析1
    Python18 Django 基础
    Python 17 web框架&Django
    一只救助犬的最后遗言
    With As 获取 id parentId 递归获取所有
    分布式事物
    div 浮动框
    sql时间比较
  • 原文地址:https://www.cnblogs.com/yzcstart/p/10767863.html
Copyright © 2011-2022 走看看