NameError: имя 'p' не определено Python(Django)

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

BOT.PY

...
...;
float_pattern = r'^\d{1,7}\.\d{1,2}$'
...
...


def p_first(message):
    if message.text.isdigit() or re.match(float_pattern, message.text):
        chat_id = message.chat.id
        uid, _ = Profile.objects.get_or_create(
            external_id=message.chat.id,
            defaults={
                'name': message.chat.username

            }
        )
        Message(
            profile=uid,
            param1=message.text
        ).save()
        p = Message.param1
        print('Parameter (p) from:', chat_id)
        bot.send_message(message.chat.id, "Ajoyib, perimetr qabul qilindi!")
        msg = bot.send_message(message.chat.id, "<b>2. "Now secondside: "</b>", parse_mode="html")
        bot.register_next_step_handler(msg, height)
        return p
    else:
        msg = bot.send_message(message.chat.id, "Nice!")
        bot.register_next_step_handler(msg, p_first)

def height(message):
    if message.text.isdigit() or re.match(float_pattern, message.text):
        chat_id = message.chat.id
        uid, _ = Profile.objects.get_or_create(
            external_id=message.chat.id,
            defaults={
                'name': message.chat.username
            }
        )
        Message(
            profile=uid,
            param2=message.text
        ).save()
        h = Message.param2
        print('Parameter (h) from:', chat_id)
        bot.send_message(message.chat.id, "Nice!" +f'{eval(str(p * h))} + ' is answer'
       
    else:
        msg = bot.send_message(message.chat.id, "Only number")
        bot.register_next_step_handler(msg, height)
            
            

В результате: :(
) NameError: имя 'p' не определено

MODELS.PY

from django.db import models


class Profile(models.Model):
    external_id = models.PositiveIntegerField(
        verbose_name='User ID',
        unique=True,
    )
    name = models.TextField(
        verbose_name='User name',
        null=True,
    )

    def str(self):
        return f'ID: {self.external_id} | Username: {self.name}'

    class Meta:
        verbose_name = 'Profile'


class Message(models.Model):
    profile = models.ForeignKey(
        to='main.Profile',
        verbose_name='Profile',
        on_delete=models.PROTECT,
        null=True,
    )
    text = models.TextField(
        verbose_name='Text',
    )
    param1 = models.FloatField(
        verbose_name='P',
        default='0'
    )
    param2 = models.FloatField(
        verbose_name='H',
        default='0'
    )
Вернуться на верх