Как через django form обновить массово записи в таблице в БД?

Ссылка скопирована
1 ответ

Есть таблица в БД (код прикреплю ниже), есть какие то в 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 обновить массово записи в таблице в БД?

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

Для обновления массово записей в таблице базы данных через Django Form можно воспользоваться методом `update` модели. Для этого необходимо создать форму, которая будет принимать данные для обновления, а затем использовать эти данные для выполнения массового обновления записей.

Прежде всего, создадим форму в файле forms.py:

from django import forms
 
class UpdateForm(forms.Form):
    field_to_update = forms.CharField()
    new_value = forms.CharField()

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

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.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно