Guardar e recuperar a lista de processados ​​em Django

votos
0

Eu tenho uma lista de processos (como [[ a, b, c], [ c, d, e]]) em Django e deseja salvar esses dados em SQL. Eu construí uma classe em modelo para tais dados como seguido.

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)

Eu só quero saber como eu poderia editar a codificação na função view.py para salvar essa lista e recuperar essa lista? Eu preciso dos dados recuperados ainda pode ser como [[ a, b, c], [ c, d, e]].

Aqui está o que eu faço, mas de erro aparece como mesa XX_result não tem nenhuma coluna chamada 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})
Publicado 08/11/2018 em 06:45
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Eu não tenho certeza de entender o seu problema.

Dizer que temos uma lista de processos matéria:

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

E um modelo de processo:

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)

Aqui, são dois ajudantes Django para salvar e recuperar essa lista:

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'))

Então, quando você tem que armazenar uma lista de processos, basta escrever:

save_raw_process_list(raw_process_list, user)

E quando você tem que recuperá-lo:

raw_process_list = retrieve_raw_process_list(user)
Respondeu 08/11/2018 em 10:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more