前言
在浏览淘宝网页时,在找不到中意的商品时,在页面顶部有诸多的搜索条件供于点击联合查询。
那么,接下来可以做一个小DEMO,如图...
Model表创建,Url映射,Views函数处理
根据上图,视频方向与视频分类是多对多的关系,视频分类与视频信息是一对多的关系,难度级别是单一的查询条件(与之前俩者并无关系)
Models.py如下:
class Direction(models.Model): """ 视频方向 """ weight = models.IntegerField(verbose_name='权重(从大到小)', default=0) name = models.CharField(verbose_name='名称', max_length=32) classification = models.ManyToManyField('Classification') class Meta: db_table = 'Direction' verbose_name_plural = '方向(视频方向)' def __str__(self): return self.name class Classification(models.Model): """ 视频分类表 """ weigth = models.IntegerField(verbose_name='权重(从大到小)', default=0) name = models.CharField(verbose_name='名称', max_length=32) class Meta: db_table = 'Classification' verbose_name_plural = '分类(视频分类)' def __str__(self): return self.name class Video(models.Model): """ 视频信息表 """ status_choice = ( (0, '下线'), (1, '上线'), ) level_choice = ( (1, '初级'), (2, '中级'), (3, '高级'), ) status = models.IntegerField(verbose_name='状态', choices=status_choice, default=1) level = models.IntegerField(verbose_name='级别', choices=level_choice, default=1) classification = models.ForeignKey('Classification', null=True, blank=True) weight = models.IntegerField(verbose_name='权重(从大到小)', default=0) title = models.CharField(verbose_name='标题', max_length=32) summary = models.CharField(verbose_name='简介', max_length=32) img = models.ImageField(verbose_name='图片', upload_to='./static/images/Video/') href = models.CharField(verbose_name='视频地址', max_length=255) create_date = models.DateTimeField(auto_now_add=True) class Meta: db_table = 'Video' verbose_name_plural = '视频' def __str__(self): return self.title