Создать метод модели, используя поля из двух разных моделей? - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь создать метод модели, который берет данные из поля в одной модели и выполняет простую арифметику с использованием данных из поля в другой модели.Я не пытаюсь создать QuerySet в views.py, скорее, я пытаюсь создать метод модели в models.py, к которому я могу легко получить доступ через переменную контекста в моем html (например, obj.model.modelmethod).

Ниже приведена очень упрощенная версия моих моделей (перед добавлением требуемого метода модели):

class Person(models.Model):
    '''
    This table serves as the ultimate parent.
    '''
    id   = models.IntegerField(auto_created=False, primary_key=True)
    name = models.CharField(max_length=128, null=True, blank=True)

    def __str__(self):
        return self.name


class SalaryYearOne(models.Model):
    id     = models.OneToOneField(
        Person,
        on_delete=models.DO_NOTHING,
        db_constraint=False,
        primary_key=True
        )
    salary1 = models.IntegerField(null=True, blank=True)


class SalaryYearTwo(models.Model):
    id     = models.OneToOneField(
        Person,
        on_delete=models.DO_NOTHING,
        db_constraint=False,
        primary_key=True
        )
    salary2 = models.IntegerField(null=True, blank=True)

Метод модели, который я хочу создать, будет в классе SalaryYearOne.Цель состоит в том, чтобы рассчитать процентное изменение заработной платы в годовом исчислении (округленное до двух знаков после запятой).Например:

class SalaryYearOne(models.Model):
...

    def salary_percent_change(self):
        return round((self.salary1 - self.salary2) / self.salary2, 2)

Вышеупомянутое больше для иллюстративных целей.Я понимаю, что есть несколько проблем с этим, как написано.Например, я понимаю, что в таблице SalaryYearOne нет поля с именем salary2 и т. Д. Однако я надеюсь, что это ясно показывает мои намерения.И, наконец, для дальнейшей информации, экземпляр Person будет выбран из ListView, и я хочу иметь возможность отображать salary_percent_change в качестве переменной контекста в моем html через мой DetailView.

КакВы бы порекомендовали мне пойти по этому поводу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...