在Django中保存和检索处理过的列表

时间:2018-11-08 06:45:21

标签: python django

我在django中有一个进程列表(例如[[“ a”,“ b”,“ c”],[“ c”,“ d”,“ e”]]),并希望将此类数据保存在sql中。我在模型中为此类数据建立了一个类,如下所示。

class Results(models.Model):
    batch_id = models.AutoField(primary_key=True)
    batch_cola = models.CharField(max_length=1000)
    batch_colb = models.CharField(max_length=1000)
    batch_colc = models.CharField(max_length=1000)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)

我只想知道如何在view.py函数中编辑编码以保存此类列表并检索此类列表?我需要检索到的数据仍可以像[[“ a”,“ b”,“ c”],[“ c”,“ d”,“ e”]]]。

这是我的工作,但是错误显示为“表XX_result没有名为owner_id的列”。

    list 
    for t in list:
        Results.objects.create(batch_cola=t[0], batch_colb=t[1], batch_colc=t[2])
    data = Results.objects.filter(owner=request.user)
    return render(request, "projects/results.html", {"datas": data})

1 个答案:

答案 0 :(得分:0)

我不确定您的问题。

说我们有一个原始流程列表:

raw_process_list = [["a", "b", "c"], ["c", "d", "e"]]

还有一个流程模型:

from django.db import models

class Process(models.Model):
    col_a = models.CharField(max_length=1000)
    col_b = models.CharField(max_length=1000)
    col_c = models.CharField(max_length=1000)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)

在这里,有两个Django帮助器可以保存和检索这样的列表:

def save_raw_process_list(rp_list, user):
    for raw_process in rp_list:
        cols = dict(zip(['col_a', 'col_b', 'col_c'], raw_process))
        Process.objects.create(owner=user, **cols)

def retrieve_raw_process_list(user):
    return list(Process.objects
                .filter(owner=user)
                .order_by('id')
                .values_list('col_a', 'col_b', 'col_c'))

然后,当您必须存储过程列表时,只需编写:

save_raw_process_list(raw_process_list, user)

当您必须找回它时:

raw_process_list = retrieve_raw_process_list(user)