Django orm对象保留请求之间的状态

时间:2016-08-09 07:55:36

标签: python django caching orm django-orm

我正在为json请求构建一个视图,并做一些工作来转移一些对象以进行序列化。

在此代码的末尾,您将看到我在模型的@property上添加了一些记录。

我发现,每次点击请求时,阵列的大小都会不断增长。

我曾假设每次从ORM获得实体时,该属性都是空白的。似乎正在发生的是财产被记住,并且意味着该名单将永远增长。

这是正确的,数据存储在哪里?记忆中?

您会看到我通过在每个请求上初始化一个新数组来解决问题,但我仍然认为这将是空白的

模型上的属性定义为:

_elements = []

    @property
    def elements(self):
        return self._elements

    @content.setter
    def elements(self, elements):
        self._elements = elements

视图模型构建在这里:

无需对代码进行多次询问,我发现它并不完美。

    index_date_start = datetime.datetime.fromtimestamp(int(index) / 1000)
    index_date_end = index_date_start + datetime.timedelta(minutes=30)

    markers = Marker.objects.filter(start__lt=index_date_end,
                              end__gt=index_date_start,
                              package_id__in=[x.pk for x in group.zone.package.all()]) \
        .select_related("elements") \
        .select_related("package")

    distinct_package_markers = markers.distinct("package")

    markers = list(markers)

    packages = [x.package for x in distinct_package_markers]

    for package in packages:
        #package.elements = []
        #WITHOUT THE LINE ABOVE, THE ARRAY KEEPS GROWING, BETWEEN REQUESTS             
        for marker in markers:
            if marker.package == package:
                cue.element.start = marker.start
                cue.element.end = marker.end
                component.elements.append(marker.element)

    return packages

0 个答案:

没有答案