Изменить значения в 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.
Затем вы можете переопределить метод сохранения и увеличить или уменьшить значение в соответствии с типом транзакции.