首页 > 解决方案 > django过滤数据并合并所有数据点以分配给新数据

问题描述

我的模型如下

class Drawing(models.Model):
    drawingJSONText = models.TextField(null=True)
    project = models.CharField(max_length=250)

保存在 drawingJSONText 字段中的示例数据如下

{"points":[{"x":109,"y":286,"r":1,"color":"black"},{"x":108,"y":285,"r":1,"color":"black"},{"x":106,"y":282,"r":1,"color":"black"},{"x":103,"y":276,"r":1,"color":"black"},],"lines":[{"x1":109,"y1":286,"x2":108,"y2":285,"strokeWidth":"2","strokeColor":"black"},{"x1":108,"y1":285,"x2":106,"y2":282,"strokeWidth":"2","strokeColor":"black"},{"x1":106,"y1":282,"x2":103,"y2":276,"strokeWidth":"2","strokeColor":"black"}]}

我正在尝试编写一个视图文件,其中根据项目字段过滤数据,并将结果的所有绘图 JSONText 字段查询集制成一个数据

def load(request):
    """ Function to load the drawing with drawingID if it exists."""
    try:
        filterdata = Drawing.objects.filter(project=1)
        ids = filterdata.values_list('pk', flat=True)
        length = len(ids)
        print(list[ids])
        print(len(list(ids)))

        drawingJSONData = dict()
        drawingJSONData = {'points': [], 'lines': []}

        for val in ids:
            if length >= 0:
                continue
                drawingJSONData1 = json.loads(Drawing.objects.get(id=ids[val]).drawingJSONText)
                drawingJSONData["points"] = drawingJSONData1["points"] + drawingJSONData["points"]
                drawingJSONData["lines"] = drawingJSONData1["lines"] + drawingJSONData["lines"]
            length -= 1
        #print(drawingJSONData)
        drawingJSONData = json.dumps(drawingJSONData)
        context = {
            "loadIntoJavascript": True,
            "JSONData": drawingJSONData
        }
        # Editing response headers and returning the same
        response = modifiedResponseHeaders(render(request, 'MainCanvas/index.html', context))
        return response

我运行没有错误,但它显示一个空白屏幕我不认为 for 函数正在工作有关如何纠正的任何建议

标签: django

解决方案


你可能想要

for id_val in ids:
    drawingJSONData1 = json.loads(Drawing.objects.get(id=id_val).drawingJSONText)
    drawingJSONData["points"] = drawingJSONData1["points"] + drawingJSONData["points"]
    drawingJSONData["lines"] = drawingJSONData1["lines"] + drawingJSONData["lines"]

推荐阅读