tastypie相关资源分组依据

tastypie related resources group by

我是 TastyPie 的新人,我需要一些帮助来完成 可能 的简单任务(还有英语 D:)。我有一个领域的两个相关资源。 ForeignKey 我想得到一个结果集,其中包含跑步者在一段时间内执行的总循环次数。该要求反映在下一个 SQL 查询中。

SELECT r.firstName, r.lastName, COUNT(l.id) FROM Runners r INNER JOIN Loops l ON r.id = l.runnerId WHERE l.start >= '1900-01-01' AND l.end <= '1900-01-02'

Resources.py

class LoopsResource(ModelResource):
    operators = fields.ForeignKey("OperatorsResource", "operators", full=True, null=True, blank=True)

class Meta:
    queryset = Loopssync.objects.all()
    resource_name = 'Loopssync'
    authorization = Authorization()
    #fields = []

    filtering = {
        "startedat" : ['gte', 'gt', 'lte', 'lt'],
        "finishedat" : ['gte', 'gt', 'lte', 'lt'],
        "operatorid": ALL_WITH_RELATIONS
    }

class RunnersResource(ModelResource):
    class Meta:
        queryset = Runners.objects.all()
        resource_name = 'Runners'
        authorization = Authorization()
        fields = ['id', 'firstname', 'lastname']
        filtering = {"id": ALL}

Models.py

class Loopssync(models.Model):
    remoteid = models.IntegerField(db_column='remoteId', blank=True, null=True)  
    startedat = models.DateTimeField(db_column='startedAt') 
    finishedat = models.DateTimeField(db_column='finishedAt')  
    runnerid = models.ForeignKey('Runners', db_column='runnerId')

class Runners(models.Model):
    firstname = models.TextField(db_column='firstName') 
    lastname = models.TextField(db_column='lastName')

此外,我想知道我应该使用什么 URI 在浏览器中获取此设置结果。

在第 2 行之后添加:

runners = fields.ToManyField("RunnersResource", "runners", full=True, null=True, blank=True)

那么你应该可以做到:

?startedat__gte=1900-01-01&finishedat__lte=1900-01-02

不用数了。您可以简单地计算返回的循环数量。或者 tastypie 甚至可以为您提供该信息。