Как вызвать метод модели во view (django)?

Всем привет.

Есть модель:

class Arsenal(models.Model):    
    question_main = models.TextField(blank=True, null=True, help_text="Главное описание вопроса", verbose_name="Описание вопроса")
    question_answer1= models.CharField(max_length=65, help_text="Максимальная длина 65 символов", verbose_name="Ответ 1")
    question_answer2= models.CharField(max_length=65, help_text="Максимальная длина 65 символов", verbose_name="Ответ 2")
    question_answer3= models.CharField(max_length=65, help_text="Максимальная длина 65 символов", verbose_name="Ответ 3")
    answer_number1 = models.IntegerField(default=0, help_text="Начинается с 0", verbose_name="Число 1 ответов")
    answer_number2 = models.IntegerField(default=0, help_text="Начинается с 0", verbose_name="Число 2 ответов")
    answer_number3 = models.IntegerField(default=0, help_text="Начинается с 0", verbose_name="Число 3 ответов")


У модели есть три метода:

def get_persent_answer1(self):
        per1 = round(self.answer_number1 * 100 / (self.answer_number1 + self.answer_number2 + self.answer_number3), 1)
        return per1

    def get_persent_answer2(self):
        per2 = round(self.answer_number2 * 100 / (self.answer_number1 + self.answer_number2 + self.answer_number3), 1)
        return per2

    def get_persent_answer3(self):
        # percent3 = round((((self.answer_number1 + self.answer_number2 + self.answer_number3)/100)*self.answer_number3), 1)
        per3 = round(self.answer_number3 * 100 / (self.answer_number1 + self.answer_number2 + self.answer_number3), 1)
        return per3


Я пытаюсь достать эти методы, примерно так:

def arsenal_votedone(request, add_id):
    arsenal_item = Arsenal.objects.get(id = add_id)
    ars1 = arsenal_item.get_persent_answer1 #собственно, он и не работает.

...

Есть ли способ?
  • Вопрос задан
  • 1846 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
У вас методы - соответственно и вызывайте их как методы
...
ars1 = arsenal_item.get_persent_answer1()


ну либо добавьте декоратор @property
@property
def get_persent_answer1(self):
        per1 = round(self.answer_number1 * 100 / (self.answer_number1 + self.answer_number2 + self.answer_number3), 1)
        return per1
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы