• Как в Django получить соседние значения записанные в БД?

    @Kaiser13 Автор вопроса
    Web Dentist, Миша Тарасов,

    Мне нужно понять как получить данные из модели произвести расчет и сохранить результат в БД. При этом важно чтобы в случае изменения данных в модели 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 произвести подобный расчет более оптимальным способом сохранив при этом связь с моделями чтобы при изменении значений в них, обновлялись ранее рассчитанные значения в БД?