Получение и использование значения из поля внешнего ключа без каких-либо преобразований (Django)

Я пытался получить значение из поля внешнего ключа "tax" в "priceWithTax()", затем, наконец, я смог получить значение с помощью следующего кода:

taxObject = self.tax

Вот полный код:

"models.py":

from django.db import models
from decimal import Decimal

class Tax(models.Model):
    tax = models.DecimalField(
        max_digits=3, 
        decimal_places=0,
        validators=[
            MaxValueValidator(100),
            MinValueValidator(0)
        ],
    )

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=5, decimal_places=2)

    TAX_ID = 1
    tax = models.ForeignKey(
        Tax,
        on_delete=models.PROTECT,
        default=TAX_ID,
    )

    @property
    def priceWithTax(self):
        # Here
        taxObject = self.tax
        tax = Decimal(str(taxObject))

        return round(self.price * ((tax + 100) / 100), 2)

Но чтобы использовать значение, мне нужно было сначала преобразовать его в тип "String" , а затем "Decimal type" , что стало немного длинным кодом, как показано ниже:

taxObject = self.tax
tax = Decimal(str(taxObject)) # Here

Итак, есть ли способы использовать значение из поля внешнего ключа "tax" в "priceWithTax()" без каких-либо преобразований?

Да, вы можете использовать значение из поля внешнего ключа "tax" в "priceWithTax()" без каких-либо преобразований.

Итак, замените этот код:

taxObject = self.tax
tax = Decimal(str(taxObject))

С помощью этого кода:

tax = self.tax.tax

Вот полный код:

"models.py":

from django.db import models
from decimal import Decimal

class Tax(models.Model):
    tax = models.DecimalField(
        max_digits=3, 
        decimal_places=0,
        validators=[
            MaxValueValidator(100),
            MinValueValidator(0)
        ],
    )

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=5, decimal_places=2)

    TAX_ID = 1
    tax = models.ForeignKey(
        Tax,
        on_delete=models.PROTECT,
        default=TAX_ID,
    )

    @property
    def priceWithTax(self):
        # Here
        tax = self.tax.tax        
        return round(self.price * ((tax + 100) / 100), 2)
Вернуться на верх