我正在使用Python(3),Django(1.11)和DRF(3.6)开发一个项目,其中我必须执行查询以从多个模型中获取数据并添加多个订单。
这就是我所拥有的:
我的models.py
:
class Sub1(models.Model):
id = models.CharField(primary_key=True, max_length=255)
login = models.CharField(max_length=255)
avatar_url = models.URLField(max_length=500)
class Sub2(models.Model):
id = models.CharField(primary_key=True, max_length=255)
name = models.CharField(max_length=255)
url = models.URLField(max_length=500)
class Event(models.Model):
id = models.CharField(primary_key=True, max_length=255)
type = models.CharField(max_length=255)
sub1 = models.ForeignKey(Sub1, on_delete=models.CASCADE, related_name='events')
sub2 = models.ForeignKey(Sub2, on_delete=models.CASCADE)
created_at = models.DateTimeField()
我的views.py:
class Sub1View(generics.GenericAPIView):
queryset = Event.objects.all().order_by('sub1')
serializer_class = EventModelSerializer
def get(self, request):
queryset = Event.objects.all().values('sub1').annotate(total=Count('sub1')).order_by('created_at')
print(queryset)
return Response(queryset, content_type='application/json', status=200)
我的urls.py:
url(r'^sub1/$', views.Sub1View.as_view(), name='sub1'),
url(r'^sub1/streak/$', views.sub1_streak, name='actor-streak')
这是我要实现的目标:
/sub1
处的GET请求进行排序。如果不止一个
Sub1 具有相同数量的事件,然后按最新事件的时间戳降序对它们进行排序。如果超过
一个 Sub1 具有与最新事件相同的时间戳,然后
按登录的字母顺序对其进行排序。Sub1
排序的maximum streak
条记录:
服务应该能够返回所有 Sub1 的JSON数组
按最大条纹数排序(即连续的总数
Sub1 天已按降序将事件推送到系统)
/sub1/streak
处的GET请求。如果不止一个
Sub1 具有相同的最大条纹,然后按
最新事件的时间戳以降序排列。如果超过
一个 Sub1 具有与最新事件相同的时间戳,然后订购
按登录的字母顺序排列。