Автоматическое угадывание прибыли/убытков на основе django и react

Я создаю аналитический сайт с использованием Yahoo Finance API.

models.py

class Stock(models.Model):
    money_to_invest = models.CharField(max_length=100)
    stock_price = models.CharField(max_length=100)
    company = models.CharField(max_length=50)
    profit_or_loss = models.CharField(max_length=20)
    author = models.ForeignKey(User, on_delete=models.CASCADE) 

serializers.py

class StockSerializer(serializers.ModelSerializer):
    class Meta:
        model = Stock
        fields = '__all__'

views.py

class StockViewSet(viewsets.ModelViewSet):
    queryset = Stock.objects.all()
    serializer_class = StockSerializer
    permission_classes = [permissions.IsAuthenticated, ]
    authentication_classes = [JWTAuthentication, ]

    def get_queryset(self):
        user = self.request.user
        return Stock.objects.filter(author=user).all()

React Part

const onInputChange = (e) => setformData({ ...formData, [e.target.name]: e.target.value });
<div className="form-group">
<input
className="form-control"
type="text"
placeholder="Profit or Loss"
name="profit_or_loss"
value={money_to_invest > regular_market_price ? 'Profit' : 'Loss'}
onChange={(e) => onInputChange(e)}
readOnly
/>
</div>

В поле profit_or_loss хочу автоматически сохранить значение Profit или Loss. если money_to_invest больше stock_price, то Profit. Как это возможно через Django и React. Я также использую Redux для управления состоянием.

Нет необходимости хранить это в поле: поле функционально полностью зависит от других полей, поэтому это внесло бы дублирование данных. Вы можете аннотировать Stock модель с помощью Case выражения [Django-doc], когда вам это нужно:

from django.db.models import Case, F, Value, When

Stock.objects.annotate(
    profit_or_loss=Case(
        When(money_to_invest__gt=F('stock_price'), then=Value('Profit')),
        default=Value('Loss')
    )
)
Вернуться на верх