Проблема с выполнением запросов к полям ForeignKey в Django
Я пытаюсь сделать запрос, чтобы найти количество зарядных станций с определенным типом заряда на зарядной станции.
Модели
class ChargeType(models.Model):
level = models.CharField('Charging speed', max_length=15)
current = models.BooleanField('Default AC, Check for DC')
def __str__(self):
return self.type
class ChargeStation(models.Model):
name = models.CharField(max_length=80)
address = models.TextField()description = models.TextField(blank=True, null=True)
def __str__(self):
return self.name
class ChargeLot(models.Model):
charge_type = models.ForeignKey(ChargeType, blank=True, null=True, on_delete=models.SET_NULL, related_name='chargetype')
charge_station = models.ForeignKey(ChargeStation, blank=True, null=True, on_delete=models.PROTECT)
def __str__(self):
return self.charge_type.type
Я пытался
from django.contrib.postgres.aggregates import ArrayAgg
chargelot=ChargeLot.objects.all()
ChargeStation.objects.annotate(level=ArrayAgg('chargelot__charge_type__level'))
Но он возвращает FieldError, говоря, что chargelot не является одним из доступных вариантов.
Как можно получить все уровни заряда ChargeLots в одном ChargeStation? Спасибо.
Это должно сработать для вас.
from django.db.models import Avg
ChageLot.objects.values('charge_type__level').annotate(count=Avg('charge_type__level'))