如何在PostgreSQL中持久保存Django模板内表中的数据

时间:2019-05-13 00:14:54

标签: django postgresql django-models django-forms django-views

我正在抓取多个站点,并显示Django模板中6个表中获得的数据。

enter image description here

我的目的是将表中的数据保留在postgresql中,但我不知道如何执行该任务。

原则上,我试图保存第二个表中的数据。

为此,我创建了下面显示的模型以及名为registroDivisaArgentina()的视图。

该模板称为quotes.html,其中有6个表。

我试图使用一个类:Forms.py文件中的RegisterArgentineValues()

models.py

lenl=list(map(len,mesasnovio))
lenl
Out[595]: [3, 4, 4, 4, 2]

lenl[0]
3

cotizaciones.html

class DivisasArgentina(models.Model):
    class Meta:
        ordering = ['CodigoDA']
    CodigoDA = models.CharField(max_length=50, primary_key = True)
    Texto_para_Reporte = models.CharField(max_length=70)

    def __str__(self):
        return '{}'.format(self.Texto_para_Reporte)

class ValoresDivisasArgentina(models.Model):
    class Meta:
        ordering = ['Dia']
    DivisasArgentina = models.ForeignKey(DivisasArgentina, on_delete=models.PROTECT)
    Dia = models.DateField(default=date.today)
    Hora = models.DateTimeField(default=timezone.now)
    Compra = models.FloatField()
    Venta = models.FloatField()
    Variacion_dia_anterior = models.FloatField()
    ClaveComparacion = models.CharField(max_length=1)

    def __str__(self):
        return '{} - {} - {}'.format(self.DivisasArgentina, self.Dia, self.ClaveComparacion)

views.py

{% extends 'base.html' %}

{% block contenido %}
<form method="POST" class="post-form">{% csrf_token %}
    <div class="container">
        <table class="table table-striped table-bordered" id="tab1">
            <thead>
                <tr>
                    <th>Divisas en el Mundo</th>
                    <th>Valor</th>
                </tr> 
            </thead>
            <tbody>
            <tr>
                {%for element in cotiz_mun%}
                    <tr>
                        {% for key,value in element.items %}
                            <td> {{ value }} </td>
                        {% endfor %}
                    </tr>
                {% endfor %}
            </tr>
            </tbody>
        </table>
    </div>
    <div class="container">
        <table class="table table-striped table-bordered" id="tab2">
            <thead>
                    <tr>
                        <th>Divisas en Argentina</th>
                        <th>Compra</th>
                        <th>Venta</th>
                    </tr> 
                </thead>
                <tbody>
                    <tr>
                        {%for element in cotiz_arg%}
                            <tr>
                                {% for key,value in element.items %}
                                    <td>{{ value }}  </td>
                                {% endfor %}
                            </tr>
                        {% endfor %}
                    </tr>
                </tbody>
            <thead>
        {{ form.as_table }}
        </table>
    </div>
    <div class="container">
        <table class="table table-striped table-bordered" id="tab3">
            <thead>
                <tr>
                    <th>Dolar Banco Nacion Argentina (Divisas)</th>
                    <th>Compra</th>
                    <th>Venta</th>
                </tr> 
            </thead>
            <tbody>
                <tr>
                    {%for element in cotiz_exp%}
                        <tr>
                            {% for key,value in element.items %}
                                <td>{{ value }} </td>
                            {% endfor %}
                        </tr>
                    {% endfor %}
                </tr>
            </tbody>
        </table>
        <table class="table table-striped table-bordered" id="tab4">
            <thead>
                <tr>
                    <th colspan="4">Dolar Futuro en Argentina</th>
                </tr>        
                <tr>
                    <th>Mes 1</th>
                    <th>Mes 2</th>
                    <th>Mes 3</th>
                    <th>Mes 4</th>
                </tr> 
            </thead>
            <tbody>
                <tr>
                    {%for element in cotiz_dol%}
                        <td>
                            {{ element.Valores}}
                        </td>
                    {% endfor %}
                </tr>
            </tbody>
        </table>
        <table class="table table-striped table-bordered" id="tab5">
            <thead>
                <tr>
                    <th colspan="3">Indicadores Varios - Tasa Libor</th>
                </tr> 
                <tr>
                    <th>Libor a 1 Mes</th>
                    <th>Libor a 2 Mes</th>
                    <th>Libor a 3 Mes</th>
                </tr>
            </thead>
                <tbody>
                    <tr>
                        {%for element in cotiz_lib%}
                            <td>
                                {{ element.Valores }}
                            </td>
                        {% endfor %}
                    </tr>           
                </tbody>
        </table>
        <table class="table table-striped table-bordered" id="tab6">
            <thead>
                <tr>
                    <th>Indicadores Varios - Indice Merval y Oro</th>
                    <th>Valores</th>
                </tr> 
            </thead>
            <tbody>
                    <tr>
                        {%for element in cotiz_ind%}
                            <tr>
                                {% for key,value in element.items %}
                                    <td> {{ value }} </td>
                                {% endfor %}
                            </tr>
                        {% endfor %}
                    </tr>
                </tr>        
            </tbody>
        </table>
    </div>
    <div class="container" id="saveData">
        <br></br>
        <button type="submit" class="btn btn-primary pull-right">Guardar Datos</button>
    </div>
</form>
{% endblock %}

forms.py

def mostrar_cotizaciones(request):
    cotiz_arg = json.loads(j_cotizaciones_argentina)
    cotiz_mun = json.loads(j_cotizaciones_mundiales)
    cotiz_exp = json.loads(j_cotizacion_export)
    cotiz_dol = json.loads(j_dolar_futuro)
    cotiz_ind = json.loads(j_indicadores)
    cotiz_lib = json.loads(j_libor)

    context = {'cotiz_mun': cotiz_mun,
               'cotiz_arg': cotiz_arg,
               'cotiz_exp': cotiz_exp,
               'cotiz_dol': cotiz_dol,
               'cotiz_ind': cotiz_ind,
               'cotiz_lib': cotiz_lib,
                }

    return render(request, 'cotizaciones.html', context)

def registrarDivisaArgentina(request):
    if request.method == 'POST':
        formulario = RegistrarValoresDivisasArgentinas(request.POST)
        if formulario.is_valid():
            formulario.save()
            return HttpResponseRedirect('/listadoValores')
    else:
        formulario = RegistrarValoresDivisasArgentinas()
    formulario.setup('Registrar', css_class="btn btn-success")
    return render(request, 'cotizaciones.html', {'formulario':formulario})

我做了一些测试,但是没有一个给出令人满意的结果。有人可以告诉我如何处理表格中的数据(在视图和表单中),以便将其存储在我的postgres表格中?

1 个答案:

答案 0 :(得分:0)

我经常执行此类任务,并且我发现ScraPyscrapy-djangoitem的组合是一个非常好的组合。

祝你好运!