Как сохранять данные в input

Я разрабатываю свой сайт и столкнулся такой проблемой.
Я создал таблицу и в ней я хочу хранить данные в input.
Сейчас это выглядит так:

personal.html

{% extends 'base.html' %}
{% block title %} Персонал. Информационный центр {% endblock %}

{% block content %}
{% now "Y/M/D" as current_now %}
<form method="POST">
    {% csrf_token %}
    <table class="table">
        <thead>
          <tr>
            <caption style="text-align:left">Текущий дата {{ current_now }} </caption> 
            <th scope="col"> </th>
            {% for month in months %}
                <th scope="col">{{ month }}</th>
            {% endfor %}
          </tr>
        </thead>
        <tbody>
          <tr>
            <th scope="row">СЧ филиала на конец мес (факт), чел</th>
            {% for month, value in months_fact.items %}
                {% if forloop.counter == current_month %}
                    <td><input type="number" name="{{month}}" value="{{value}}" style="width:70px"></td>
                {% else %}
                    <td><input type="number" name="{{month}}" value="{{value}}" style="width:70px; background-color:#A9A9A9" readonly></td>
                {% endif %}
            {% endfor %}
        </tr>
            <th scope="row">СЧ филиала на конец мес (по штату), чел</th>
            {% for month in months %}
                {% if forloop.counter == current_month %}
                    <td><input type="number" name="" value="" style="width:70px"></td>
                {% else %}
                    <td><input type="number" name="" value="" style="width:70px; background-color:#A9A9A9" readonly></td>
                {% endif %}
            {% endfor %} 
          </tr>
          <tr>
            <th scope="row">Вакансий, шт.</th>
            {% for month in months %}
            {%if forloop.counter == current_month%}
                <td><input type="number" style="width:70px"></td>
            {% else %}
                <td><input type="number" style="width:70px; background-color:#A9A9A9" readonly></td>
            {% endif %}

        {% endfor %}
          
          </tr>
          <tr>
            <th scope="row">Принято, чел</th>
            {% for month in months %}
            {%if forloop.counter == current_month%}
                <td><input type="number"  style="width:70px"></td>
            {% else %}
                <td><input type="number"  style="width:70px; background-color:#A9A9A9"   readonly></td>
            {% endif %}

        {% endfor %}
           
          </tr>
          <tr>
            <th scope="row">Уволено, чел</th>
            {% for month in months %}
            {%if forloop.counter == current_month%}
                <td><input type="number" style="width:70px" ></td>
            {% else %}
                <td><input type="number"  style="width:70px; background-color:#A9A9A9" readonly></td>
            {% endif %}

        {% endfor %}
            
          </tr>
          <tr>
            <th scope="row">Мат. Помощь, чел</th>
            {% for month in months %}
            {%if forloop.counter == current_month%}
                <td><input type="number"  style="width:70px"></td>
            {% else %}
                <td><input type="number"  style="width:70px; background-color:#A9A9A9" readonly></td>
            {% endif %}

        {% endfor %} 
        </tr> 
        </tbody>
      </table>
      <div style="text-align:right;">
        <button type="submit" class="save btn btn-secondary">Сохранить показания</button>
    </div>  
      
</form>
{% endblock %}

На данной момент models.py выглядит вот так

class shfact(models.Model):
    class Meta:
        verbose_name = 'СЧ филиала на конец мес (факт)'
        verbose_name_plural = 'СЧ филиала на конец мес (факт)'

    month = models.CharField(max_length=20,  verbose_name='Месяц')
    sch_fact = models.IntegerField(verbose_name='Значение')

    def __str__(self):
        return f'{self.month} - {self.sch_fact}'
    

class shshat(models.Model):
    class Meta:
        verbose_name = 'СЧ филиала на конец мес (по штату), чел'
        verbose_name_plural = 'СЧ филиала на конец мес (по штату), чел'

    month = models.CharField(max_length=20,  verbose_name='Месяц')
    sch_shat = models.IntegerField(verbose_name='Значение')

    def __str__(self):
        return f'{self.month} - {self.sch_shat}'

И черновой вариант views.py:

from django.shortcuts import redirect, render
from datetime import datetime


from zatrati_personal.models import shfact


def zatrati_personal(request):
    months = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']
    now = datetime.now()
    current_month = now.month


    if request.method == 'POST':
        for month, value in request.POST.items():
            if month != 'csrfmiddlewaretoken':  
                shfact.objects.update_or_create(month=month, defaults={'sch_fact': value})                          
        return redirect('zatrati_personal:index')
        
    months_fact = {obj.month: obj.sch_fact for obj in shfact.objects.all()}

    context = {
        'months': months,
        'current_month': current_month,
        'months_fact': months_fact,
    }
    return render(request, "zatrati_personal/personal.html", context)

Так код срабатывает на одну горизонтальную колонку Как мне решить проблему с остальными горизонтальными колонками. Скрин прилагаю для наглядности введите сюда описание изображения

Сейчас выглядит вот так и работает

views.py

from django.shortcuts import redirect, render
from datetime import datetime


from zatrati_personal.models import shfact, shshat, vacancy,accepted, dismissed, mathelp


def zatrati_personal(request):
    months = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']
    now = datetime.now()
    current_month = now.month


    if request.method == 'POST':
        #print(request.POST)
        for month in months:
            value_facts = request.POST.getlist(month)
            shfact.objects.update_or_create(month=month, defaults={'sch_fact': value_facts[0]}) 
            shshat.objects.update_or_create(month=month, defaults={'sch_shat': value_facts[1]})
            vacancy.objects.update_or_create(month=month, defaults={'vacancy': value_facts[2]})
            accepted.objects.update_or_create(month=month, defaults={'accepted': value_facts[3]})
            dismissed.objects.update_or_create(month=month, defaults={'dismissed': value_facts[4]})
            mathelp.objects.update_or_create(month=month, defaults={'mathelp': value_facts[5]})
            
    months_fact = {obj.month: obj.sch_fact for obj in shfact.objects.all().order_by('id')}
    months_shat = {obj.month: obj.sch_shat for obj in shshat.objects.all().order_by('id')}
    months_vacancy = {obj.month: obj.vacancy for obj in vacancy.objects.all().order_by('id')}
    months_accepted = {obj.month: obj.accepted for obj in accepted.objects.all().order_by('id')}
    months_dismissed = {obj.month: obj.dismissed for obj in dismissed.objects.all().order_by('id')}
    months_mathelp = {obj.month: obj.mathelp for obj in mathelp.objects.all().order_by('id')}



    context = {
        'months': months,
        'current_month': current_month,
        'months_fact': months_fact,
        'months_shat': months_shat,
        'months_vacancy': months_vacancy,
        'months_accepted': months_accepted,
        'months_dismissed': months_dismissed,
        'months_mathelp': months_mathelp,
    }
    return render(request, "zatrati_personal/personal.html", context)
Вернуться на верх