Изменить значения в django

я создаю приложение, React Native как Frontend и Django как Backend, я использую axios для получения данных от пользователя и отправки их в Backend.

пользователь должен выбрать один из этих типов [ баланс, сбережения, доходы, кредиты, расходы]

я хочу, чтобы значение [ баланса] увеличивалось и уменьшалось в зависимости от других типов сбережения, доходы увеличивают значение баланса. а кредиты, расходы уменьшают значение баланса .

Я не уверен, должен ли я делать математику на фронт-энде в данных axios или в модели на бэкэнде.

модель транзакций

from datetime import date
from tkinter import CASCADE
from django.db import models
from authentication.models import User


# Create your models here.


class Transaction(models.Model):

    TYPE_OPTIONS = [
        ('BALANCE', 'BALANCE'),
        ('SAVING', 'SAVING'),
        ('LOANS', 'LOANS'),
        ('INCOME', 'INCOME'),
        ('EXPENSES', 'EXPENSES')
    ]

    type = models.CharField(choices=TYPE_OPTIONS, max_length=255)
    amount = models.CharField(max_length=255)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    category = models.CharField(max_length=255)
    date = models.CharField(max_length=255)


class FinancialDeateails(models.Model):
    balance = models.IntegerField(max_length=255)
    savaing = models.IntegerField(max_length=255)
    income = models.IntegerField(max_length=255)
    loans = models.IntegerField(max_length=255)
    expenses = models.IntegerField(max_length=255)
    owner = models.OneToOneField(User, on_delete=models.CASCADE)

Не уверен, что вам нужно, может быть что-то вроде этого:

class Kind(models.Model):
    label = models.CharField(max_length=255)
    value = models.CharField(max_length=255)

    TYPE_OPTIONS = [
        ('BALANCE', 'BALANCE'),
        ('SAVING', 'SAVING'),
        ('LOANS', 'LOANS'),
        ('INCOME', 'INCOME'),
        ('EXPENSES', 'EXPENSES')
    ]

    @classmethod
    def initial(cls):
        if not cls.objects.exists():
            cls.objects.bulk_create([cls(label=k, value=v) for k, v in cls.TYPE_OPTIONS])

    def __str__(self):
        return self.label


class Transaction(models.Model):
    type = models.ForeignKey(Kind, on_delete=models.CASCADE)
    amount = models.CharField(max_length=255)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    category = models.CharField(max_length=255)
    date = models.CharField(max_length=255)

Вы хотите увеличить или уменьшить значение баланса из FinancialDeateails, когда пользователь изменит значение типа в Transaction?

Если я правильно понял, вы должны установить отношения один-к-одному с FinancialDeateails и FinancialDeateails.

Затем вы можете переопределить метод сохранения и увеличить или уменьшить значение в соответствии с типом транзакции.

Вернуться на верх