我有像这样的Django模型:
class Floor(models.Model):
name = models.CharField(max_lenght =100)
class Point(models.Model):
created_at = fields.UnixDateTimeField(auto_now_add=True)
updated_at = fields.UnixDateTimeField(auto_now=True)
floor = models.ForeignKey(Floor)
device = models.CharField(max_lenght=100)
creates_at 和 updated_at 只是带有时间戳的自定义字段。
所以,我需要发送像 points /?start = x,end = y,timeslice = z 这样的请求,其中x - 是这个时期的开始时间戳,y - 结束时间戳,z - 时间片。例如,如果x是一天的开始,而y是和那天,并且z是3600?我将有24个切片,并希望像这样拥有JSON:
{
floor_id: floor_id
slice: first timestamp of first slice
count: count of devices in this slice
},
{
floor_id: floor_id
slice: first timestamp of second slice
count: count of devices in this slice
},
...
可行的是,我需要自定义我的序列化程序,使用django-filters并为此目的编写特殊视图,但我不知道如何将它组合在一起
UPD:好的,我为Floor模型自定义了我的序列化程序,现在它看起来像:
class FloorWithTPCountSerializer(serializers.ModelSerializer):
class Meta:
model = Floor
fields = ('id', 'count')
count = serializers.SerializerMethodField('get_tp_count')
def get_tp_count(self, obj):
return obj.trackpoint_set.values('tag').distinct().count()
并且我没有像JSON一样回复JSON:
{
"id": 28,
"count": 3
},
{
"id": 35,
"count": 1
},
我可以建议,我需要在此序列化类中获取查询字符串参数,并声明一种在时间片内计算点数的方法。那么,我怎样才能在序列化器类中获得querydict?
答案 0 :(得分:0)
好的,正如我早期建议的那样,关键在于序列化程序的定制。我必须为所需的JSON结构声明自定义方法。 这是我的解决方案:
{
"id": 49,
"results": [
{
"count": 3,
"timestamp": 1496188800
}
]
},
当然,它仍然缺乏一些querstring一致性的检查,但我可以获取JSON表单,因为我需要。 例如,请求
?<强> tpfloors /起动= 1496188800&安培;端= 1496275199&安培;聚集=天强>
我可以得到这样的东西:
$posttype = $grid->wpupg_post_types;
最好的问候。