Получение и использование значения из поля внешнего ключа без каких-либо преобразований (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)