Мне нужно понять как получить данные из модели произвести расчет и сохранить результат в БД. При этом важно чтобы в случае изменения данных в модели Django автоматически пересчитывал и обновлял результат в БД.
Например для расчета массы в файле wiews.py можно объявить переменные и присвоить им следующие значения:
def add_box(request):
if request.method == 'POST':
form = AddBoxForm(request.POST)
if form.is_valid():
box = form.cleaned_data['box']
length = Box.objects.values_list('length', flat=True).get(name=box)
width = Box.objects.values_list('width', flat=True).get(name=box)
height = Box.objects.values_list('height', flat=True).get(name=box)
volume = length * width * height # Объем коробки
material = form.cleaned_data['material']
density = Material.objects.values_list('density', flat=True).get(name=material)
mass = volume * density # Масса коробки
obj = Product()
obj.name = name
obj.material = material
obj.mass = mass
obj.save()
return redirect('add_box')
else:
form = AddBoxForm()
return render(request, 'add_box.html', {'form': form})
Но, в таком случае, что бы записать значение в БД, в модели приходиться создавать еще одно пустое поле "mass" в которое передается значение из wiews.py при этом если поменять какой то из параметров используемых при расчете, ранее рассчитанные и записанные в БД параметры массы не меняются.
Можно ли в Django произвести подобный расчет более оптимальным способом сохранив при этом связь с моделями чтобы при изменении значений в них, обновлялись ранее рассчитанные значения в БД?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Мне нужно понять как получить данные из модели произвести расчет и сохранить результат в БД. При этом важно чтобы в случае изменения данных в модели Django автоматически пересчитывал и обновлял результат в БД.
Например для расчета массы в файле wiews.py можно объявить переменные и присвоить им следующие значения:
Но, в таком случае, что бы записать значение в БД, в модели приходиться создавать еще одно пустое поле "mass" в которое передается значение из wiews.py при этом если поменять какой то из параметров используемых при расчете, ранее рассчитанные и записанные в БД параметры массы не меняются.
Можно ли в Django произвести подобный расчет более оптимальным способом сохранив при этом связь с моделями чтобы при изменении значений в них, обновлялись ранее рассчитанные значения в БД?