【发布时间】:2017-05-31 22:32:46
【问题描述】:
我有一个像这样的 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 之类的:
{
"id": 28,
"count": 3
},
{
"id": 35,
"count": 1
},
我可以建议,我需要在这个序列化类中获取查询字符串参数,并声明一个在时间片内计算点的方法。那么,如何在序列化程序类中获取 querydict?
【问题讨论】:
-
你的问题不是很清楚。请求 points/?start=x,end=y,timeslice=z 有什么作用?什么是开始、结束和时间片?
-
哦,对不起,我更正了。
-
为了确定,您想获取在开始和结束之间创建的所有点的列表,并在某些时间片中组合在一起,其中时间片是以秒为单位的时间段?
-
不,我想获取每个时间片中起点和终点之间的点数。
标签: python django django-views django-rest-framework