Как отправить данные объекта модели Django в качестве ответа в соответствии с выбором пользователем кнопки InlineKeyboardButton?

Я новичок в создании ботов Telegram с помощью Django. Я выбрал библиотеку python-telegram-bot для создания ботов с помощью Django.

Я создал модель Django, названную как category:

class category(models.Model):
    name = models.CharField(max_length=250)
    category_id = models.IntegerField()

    def __str__(self):
        return self.name

и продукт:

class product(models.Model):
    product_category = models.ForeignKey(category, on_delete=models.SET_NULL, blank=True, null=True)
    name = models.CharField(max_length=250)
    cost = models.FloatField()
    img = models.ImageField()

    def __str__(self):
        return self.name

Успешно создал InlineKeyboardButtons и поместил id каждого объекта модели продукта в каждую кнопку, с этими функциями:

def product(update: Update, context: CallbackContext):
    query = update.callback_query.data

    product_button_list = []
    
    for each in product.objects.select_related().filter(product_category_id = query):
        product_button_list.append(InlineKeyboardButton(each.name, callback_data=each.id))
    reply_markup = InlineKeyboardMarkup(build_menu(product_button_list,n_cols=2))
    update.callback_query.message.edit_text("Mahsulotni tanlang!", reply_markup=reply_markup)

def build_menu(buttons,n_cols,header_buttons=None,footer_buttons=None):
  menu = [buttons[i:i + n_cols] for i in range(0, len(buttons), n_cols)]
  if header_buttons:
    menu.insert(0, header_buttons)
  if footer_buttons:
    menu.append(footer_buttons)
  return menu

Когда пользователь выбирает кнопку, названную как имя объекта модели продукта, я получаю правильный id объекта модели продукта, проверено с помощью печати запроса:

def product_info(update: Update, context: CallbackContext):
    query = update.callback_query.data
    print(query)

    obj = product.objects.filter(pk=query)
    print(obj)

Вопрос: Как передать пользователю поля объекта модели продукта Django, включая его изображение, в соответствии с выбранным пользователем продуктом?

Нравится:

Вы выбрали продукт:

Изображение продукта

Наименование товара

Стоимость продукта

Вот ответ, я преуспел до сих пор:

filename = 'path_until_media_folder' + str(obj.img.url) 

update.callback_query.bot.send_photo(update.effective_chat.id, photo=open(filename, 'rb'))
Вернуться на верх