Как группировать данные по json-полям в django-mongodb

Здравствуйте, Заранее спасибо...

Я использую Django 3.0.5, Python 3.8.0 и MongoDB 5.0

Мое требование:

Сгруппируйте данные, сопоставив значения полей Ширина, Высота, Толщина и Тип. Во время группировки данных выполните суммирование длины.

Я пробовал этот способ

list(UploadCableTrayData.objects.filter(creator_id__in=selected_users).filter(date_added__range=(selected_start_date, selected_end_date)).values(
                        'Thickness__value', 'Width__value', 'Height__value', 'Selection').annotate(dcount=Count(['Thickness', 'Width', 'Height']), Length=Sum('Length__value')).order_by("date_updated"))

Но я получаю ошибки следующего вида

NameError: имя 'Thickness__value' не определено

Вот моя модель

class UploadCableTrayData(BaseModel, models.Model):
    """
    Model to store Cable Tray data

    """
    order_upload_id = models.AutoField(primary_key=True)
    Order_number = jsonfield.JSONField(null=True, blank=True)
    Type = jsonfield.JSONField(null=True, blank=True)
    Selection = jsonfield.JSONField(null=True, blank=True)
    Height = jsonfield.JSONField(null=True, blank=True)
    Width = jsonfield.JSONField(null=True)
    Box_width = jsonfield.JSONField(null=True)
    Box_height = jsonfield.JSONField(null=True)
    Length = jsonfield.JSONField(null=True)
    Inner_bend1 = jsonfield.JSONField(null=True, blank=True)
    Inner_bend2 = jsonfield.JSONField(null=True, blank=True)
    Thickness = jsonfield.JSONField(null=True, blank=True)
    Rung_width = jsonfield.JSONField(null=True, blank=True)
    Rung_height = jsonfield.JSONField(null=True, blank=True)
    Distance_between_rungs = jsonfield.JSONField(null=True, blank=True)
    project = models.ForeignKey('project.Project', on_delete=models.DO_NOTHING)

    def __str__(self):
        return str(self.order_upload_id)

    class Meta:
        db_table = 'UploadCableTrayData'

Данные, хранящиеся в модели, выглядят следующим образом

{
    "_id": {
        "$oid": "62384f772d6545101709083b"
    },
    "order_upload_id": 4,
    "creator_id": 3,
    "updater_id": 3,
    "date_added": {
        "$date": {
            "$numberLong": "1647857527370"
        }
    },
    "date_updated": {
        "$date": {
            "$numberLong": "1647857527370"
        }
    },
    "is_deleted": false,
    "Order_number": {
        "key": "order",
        "value": "o1"
    },
    "Type": {
        "key": "type",
        "value": "pct"
    },
    "Selection": [{
        "key": "material",
        "value": "m1"
    }],
    "Height": {
        "key": "height",
        "value": "200"
    },
    "Width": {
        "key": "width",
        "value": "200"
    },
    "Box_width": {
        "key": "box_width",
        "value": ""
    },
    "Box_height": {
        "key": "box_height",
        "value": ""
    },
    "Length": {
        "key": "running_meter",
        "value": "200"
    },
    "Inner_bend1": {
        "key": "inner_bend1",
        "value": ""
    },
    "Inner_bend2": {
        "key": "inner_bend2",
        "value": ""
    },
    "Thickness": {
        "key": "thickness",
        "value": "1"
    },
    "Rung_width": {
        "key": "rung_width",
        "value": ""
    },
    "Rung_height": {
        "key": "rung_height",
        "value": ""
    },
    "Distance_between_rungs": {
        "key": "distance_between_rungs",
        "value": ""
    },
    "project_id": 2
}
Вернуться на верх