Гость
Map
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Заполнить значение поля формы для ввода новой записи / 1 сообщений из 1, страница 1 из 1
15.06.2024, 00:01
    #40138660
2-20_i_1-50_R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнить значение поля формы для ввода новой записи
Добрый день.
У меня в приложении все работает, но хотелось бы усовершенствовать один момент, связанный с вводом новой записи в таблицу.
Нужно сделать так, чтобы при вызове формы ввода новой записи один параметр - Инвентарный номер машины уже был записан как значение выпадающего списка в окне формы, чтобы пользователь не выбирал его вручную из списка.
Извиняюсь за некие вольности в написании кода .py и html, я только учусь и по другому ещё не умею.

Есть две модели:
модель mashina
Код: Python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
class Mashina(models.Model):
    invnom = models.CharField(primary_key=True, max_length=15)
    narabotka = models.FloatField(blank=True, null=True)
    id_podr = models.SmallIntegerField(blank=True)
    id_marka_mash = models.ForeignKey(MarkaMash, models.DO_NOTHING, db_column='id_marka_mash',
                                       verbose_name = 'Марка машины')
    nkg = models.FloatField(blank=True, null=True)
    nom_pole = models.CharField(max_length=12, blank=True, verbose_name='№ поля')
    ploshad = models.FloatField(blank=True, null=True)
    grupa = models.SmallIntegerField(blank=True)

    def __str__(self):
        return self.invnom

    def get_absolute_url(self):
        return f'/voda/spravki/mashina/'

    class Meta:
        managed = False
        db_table = 'mashina'
модель El_energi - расход электроэнергии машинами
Код: Python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class El_energi(models.Model):
    id_e = models.AutoField(primary_key=True)
    invnom = models.ForeignKey(Mashina, on_delete=models.CASCADE, db_column='invnom',
                                verbose_name='№ машины')
    data = models.DateField(auto_now=False, verbose_name='Дата')
    rashod_el = models.FloatField(blank=True, null=True, verbose_name='Расход, кВт')

    def get_absolute_url(self):
        return f'/voda/uchet/uchet_voda_el/'

    class Meta:
        managed = False
        db_table = 'el_energi'
Я могу видеть какой расход электроэнергии по датам был у каждой машины

views.py
Код: Python
1.
2.
3.
4.
5.
6.
7.
8.
def rashod_el(request, mashina_invnom):
    template = loader.get_template('voda/rashod_el.html')
    context = {
        'mashinas': Mashina.objects.all().order_by('invnom'),
        'els': El_energi.objects.filter(invnom=mashina_invnom),
        'mashina_invnom': mashina_invnom
        }
    return HttpResponse(template.render(context, request))
Вид страницы rashod_el.html - смотрите прилагаемый файл - Карточка расхода электро.jpeg

rashod_el.html
Код: HTML
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
{% extends "layout/basic.html" %}

{% block content %}
<head>
    <meta charset="UTF-8">
    <title>PnaBHa4 :: Учёт расхода электроэнергии </title>
</head>
<body>
    <h1>
        <button class="btn btn-secondary" type="button" onclick= location.href="{% url 'uchet_voda_el' %}";>
            <i class="bi bi-arrow-left"></i>Назад</button>
            Учёт расхода электроэнергии по машине № {{ mashina_invnom }}
            <button class="btn btn-secondary" type="button" onclick= location.href="{% url 'el_createview' %}";>
                <i class="bi bi-arrow-left"></i>Новый расход электроэнергии</button>
            <button class="btn btn-secondary" type="button" onclick= location.href="{% url 'pdf_view_mashina' %}";>
                <i class="bi bi-arrow-left"></i>Печать</button>
    </h1>
    <table>
        <tr>
            <th width="10%">Инвент. №</th>
            <th>Дата</th>
            <th>Расход, кВт.</th>
        </tr>
        {% for rashod_el in els %}
        <tr>
            <td> {{ mashina_invnom }} </td>
            <td>{{ rashod_el.data|date:'d.m.Y' }}</td>
            <td>{{ rashod_el.rashod_el }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
{% endblock %}
На этой странице я нажимаю кнопку "Новый расход электроэнергии"
и перехожу в форму ввода нового расхода - смотри прилагаемый рис. Форма Ввода Эл энерги.jpg

create_el_energi.html
Код: HTML
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
{% extends "layout/basic.html" %}

{% block content %}
    <head>
        <meta charset="UTF-8">
        <title>Учёт нового расхода электроэнергии : : Учёт электроэнергии </title>
    </head>
    <body>
        <h1>Учёт нового расхода электроэнергии машиной</h1>
        <form method="post">

            {% csrf_token %}
           <p1>Дата {{ form.data }}</p1><br><br>
           <p2>Инв. № {{ form.invnom }} </p2><br><br>
           <p3>Расход, кВт {{ form.rashod_el }}</p3><br><br>

            <input type="submit" value="Добавить"> <a href="{% url 'uchet_voda_el' %}">Отмена</a>
        </form>
    </body>
{% endblock %}
Хотелось бы в качестве form.invnom на этой форме сразу получить значение инвентарного номера рассматриваемой машины.
Как это сделать?

forms.py
Код: Python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
class Create_elForm(ModelForm):
    model = El_energi
    data = forms.DateField(
        label="Дата",
        required=True,
        widget=forms.DateInput(format="%Y-%m-%d", attrs={"type": "date"}),
        input_formats=["%Y-%m-%d"]
    )
    rashod_el = forms.DecimalField(label='Расход, кВт', decimal_places=2)

    class Meta:
        model = El_energi
        fields = ('id_e', 'data', 'invnom', 'rashod_el')
        labels = {'invnom': 'Инв. №', 'rashod_el': 'Расход, кВт'}
views.py
Код: Python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class el_createview(CreateView):
    model = Mashina
    model = El_energi
    template_name = 'voda/create_el_energi.html'
    form_class = Create_elForm

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['mashinas'] = Mashina.objects.all().order_by('invnom')
        context['els'] = El_energi.objects.all()
        return context
urls.py
Код: Python
1.
2.
3.
4.
5.
6.
7.
8.
.....................
urlpatterns = [
    ........................................
    .............................................
    path ('rashod_el/<str:mashina_invnom>/', views.rashod_el, name='rashod_el'),
    path ('new_el/', el_createview.as_view(), name='el_createview'),

]
Карточка расхода электро.jpg
Форма Ввода Эл энерги.jpg
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Заполнить значение поля формы для ввода новой записи / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]