排序查询,模糊查询
排序查询
根据歌手名下的歌曲数量,对歌手进行降序排序
创建两个模型
# 创建歌手模型
class Songer(models.Model):
name = models.CharField(max_length=50)
sex = models.CharField(max_length=20)
img = models.ImageField(upload_to='static')
# 创建歌曲模型
class Sing(models.Model):
name = models.CharField(max_length=40)
# related_name='sings':因为歌手没有外键,所以无法通过歌手找到歌曲,就需要设置一个方法,
# 使用通过歌手模型能够找到歌曲模型
songer = models.ForeignKey(Songer,on_delete=models.CASCADE,related_name='sings')
time = models.DateTimeField(auto_now_add=True)
排序查询
def get(self,request):
# 查询所有歌手,并按照其歌曲降序排序,annotate:注解
songer_li = Songer.objects.annotate(sings_num = Count('sings')).order_by('-sings_num').values()
return Response(songer_li)
模糊查询
def get(self,request):
# 接收前端传来的查询关键字
word = request.GET.get('word')
# 利用关键字对歌手模糊查询 __contains:查询某个字符
songer_li = Songer.objects.filter(name__contains=word).values()
# 利用关键字对歌曲模糊查询
sing_li = Sing.objects.filter(name__contains=word).values()
# 返回满足条件的数据
return Response({'songer_li':songer_li,'sing_li':sing_li})