Как через django form обновить массово записи в таблице в БД?
Есть таблица в БД (код прикреплю ниже), есть какие то в Django уже придуманные модули для массового обновления данных из формы ? Подойдет ли для моих задач Formsets?
class FuelSelling(models.Model): shopkey = models.ForeignKey('users.Departments', to_field='internal_code', on_delete=models.PROTECT) fuel = models.ForeignKey('office.Fuel', on_delete=models.PROTECT) date_othet = models.DateField() volume_measurements = models.PositiveIntegerField() counter = models.PositiveIntegerField() strait = models.PositiveIntegerField() arrival = models.PositiveIntegerField() date_add = models.DateField(auto_now_add=True) date_update = models.DateField(auto_now=True) surname = models.CharField(max_length=64) def __str__(self): return f'{self.shopkey} {self.fuel}: {self.date_othet}' |
class FuelSelling(models.Model): shopkey = models.ForeignKey('users.Departments', to_field='internal_code', on_delete=models.PROTECT) fuel = models.ForeignKey('office.Fuel', on_delete=models.PROTECT) date_othet = models.DateField() volume_measurements = models.PositiveIntegerField() counter = models.PositiveIntegerField() strait = models.PositiveIntegerField() arrival = models.PositiveIntegerField() date_add = models.DateField(auto_now_add=True) date_update = models.DateField(auto_now=True) surname = models.CharField(max_length=64) def __str__(self): return f'{self.shopkey} {self.fuel}: {self.date_othet}'
Дополнительно:
Ответы:
https://docs.djangoproject.com/en/4.1/topics/db/qu...
- Немного не то, нужно чтобы django понимал, что каждая строка формы это отдельная строка в таблице, например если обновить данные только в поле Замеры, то как реализовать чтобы в БД только данное поле изменилось
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для обновления массово записей в таблице базы данных через Django Form можно воспользоваться методом `update` модели. Для этого необходимо создать форму, которая будет принимать данные для обновления, а затем использовать эти данные для выполнения массового обновления записей.
Прежде всего, создадим форму в файле forms.py:
from django import forms class UpdateForm(forms.Form): field_to_update = forms.CharField() new_value = forms.CharField()
Затем создадим представление, которое будет обрабатывать данные из этой формы и обновлять записи в таблице базы данных. Например, представление в файле views.py может выглядеть следующим образом:
from django.shortcuts import render from .models import YourModel from .forms import UpdateForm def update_records(request): if request.method == 'POST': form = UpdateForm(request.POST) if form.is_valid(): field_to_update = form.cleaned_data['field_to_update'] new_value = form.cleaned_data['new_value'] YourModel.objects.update(**{field_to_update: new_value}) return render(request, 'update_success.html') else: form = UpdateForm() return render(request, 'update_records.html', {'form': form})
В этом примере, при отправке формы методом POST, данные из формы обрабатываются, извлекаются необходимые значения и вызывается метод `update` для модели `YourModel`. Обратите внимание, что в данном примере мы используем `**{field_to_update: new_value}` для передачи ключей и значений в метод `update`, что позволяет обновлять несколько полей одновременно.
Не забудьте настроить маршруты и шаблоны для этого представления. В результате, вы сможете обновлять массово записи в таблице базы данных через Django Form.