Я работаю над проектом, в котором есть 3 модели.
- Устройства: все устройства, задействованные в проекте.
- Парки: каждое устройство входит в один парк.
- Данные: данные, которые отправляют устройства.
Теперь я хочу знать, сколько данных пришло мне сегодня.
На мой взгляд, у меня есть это,
def dataPlots(request):
today = datetime.date(2020, 5, 18)
data = DevData.objects.filter(data_timestamp__date=today)
data = loads(serializers.serialize('json', data))
Если я использую len()
, я могу теперь получить общее значение. Но как я могу узнать, сколько данных у меня есть для каждого парка?
Я пришел, чтобы создать этот l oop, который будет сообщать мне для каждого устройства, но мне нужно значение для каждого парка и Более того, я думаю, что я усложняюсь.
data_dict = {}
for d in data:
if d['fields']['dev_eui'] in data_dict:
data_dict[d['fields']['dev_eui']] = data_dict[d['fields']['dev_eui']] + 1
else:
data_dict[d['fields']['dev_eui']] = 1
print(data_dict)
Модели:
class Fleet(models.Model):
fleet_id = models.IntegerField(primary_key=True, unique=True)
fleet_name = models.CharField(max_length=20, unique=True)
class Device(models.Model):
dev_eui = models.CharField(max_length=16, primary_key=True, unique=True)
dev_name = models.CharField(max_length=20, unique=True)
fleet_id = models.ForeignKey(Fleet, on_delete=models.CASCADE)
def __str__(self):
return self.dev_eui
class DevData(models.Model):
data_uuid = models.UUIDField(primary_key=True, default=uuid.uuid1, editable=False)
data_timestamp = models.DateTimeField()
data = models.FloatField()
dev_eui = models.ForeignKey(Device, on_delete=models.CASCADE)
def __str__(self):
return self.dev_eui
Кто-нибудь может мне помочь? Я полагаю, что комбинирования двух моделей и некоторого фильтра должно хватить, но я не знаю, как это сделать.