Как сохранить поле из другой модели в переменную NOT A FIELD

У меня есть модель под названием Actual:

# Actual parts table
class Actual(models.Model):
    vendor = models.ForeignKey(Vendor, on_delete=models.CASCADE, verbose_name="Vendor name", related_name="actualvendor")       
    number = models.CharField("External part number", max_length=32, unique=True, blank=True, null=True)     
    description = models.CharField(max_length=64, blank=True)                                     
    pq = models.DecimalField(max_digits=7, decimal_places=2, default=1)                                                           
    mrrp = models.DecimalField(max_digits=10, decimal_places=2)     
    # Model metadata
    class Meta:
        unique_together = ["vendor", "number"]
        verbose_name_plural = "actual external parts"
    # Display below in admin 
    def __str__(self): 
       return f"{self.number}"

У меня также есть другая модель под названием Offer:

class Offer(models.Model):
    sync_id = models.ForeignKey(Sync, on_delete=models.CASCADE, verbose_name="Internal part number", related_name="part")
    discount = models.DecimalField(max_digits=3, decimal_places=2, default=0)   
    moq = models.DecimalField(max_digits=4, decimal_places=2, default=1)                                              
    status = models.CharField(max_length=20, choices=OFFERSTATUS_CHOICES, default=1)
    actual = models.OneToOneField(Actual, on_delete=models.CASCADE)
    # Display something in admin
    def __str__(self):
        return f"Offer {self.id} for {self.sync_id}"

    # Calculate the price
    def price(self):
        return self.actual.mrrp * (1-self.discount)

Я пытаюсь рассчитать "цену", используя 'mrp' Но 'mrrp' из другой модели.

Я могу сделать это с помощью кода, который я прикрепил, но как вы можете видеть в админке django, 'actual' отображается как поле. Django admin view of adding an Offer

Во-первых, мне не нужно, чтобы это было поле. Мне нужно, чтобы 'Actual' была только переменной, которая хранит значение 'mrrp'.

Во-вторых, я хочу, чтобы он автоматически выбирал соответствующее значение на основе выбора других полей.

Как вы можете видеть, в настоящее время я использую поле и, в частности, поле OnetoOne для этого.

Есть ли другой способ ссылаться на поля из другой модели? Уверен, что поля - это не единственный способ?

Я решил эту проблему с помощью декоратора свойств. У меня была правильная идея, но я не поместил декоратор свойств поверх функции, которая вычисляет цену. Используйте декоратор свойств для отображения данных, как вы бы сделали поле в Django.

Я добавил следующее в нижнюю часть моей модели:

    @property
    def price(self):
        return self.actual.mrrp * (1-self.discount)
Вернуться на верх