質問
再び同じ質問になってしまい申し訳ございません。まだ解決出来ませんんので再び質問させていただきます。
以下が今回使用したモデルです。
各科目のフィールドは試験問題のPDFファイルのURLを格納するためにURLフィールドになってます。
models.py
class School_name(models.Model): school_name = models.CharField(max_length=100,blank=True, null=True) def __str__(self): return self.school_name class School_exam(models.Model): school = models.ForeignKey(School_name, on_delete=models.CASCADE) year = models.CharField(max_length=20,blank=True,null=True) japanese = models.URLField(blank=True, null=True) math = models.URLField(blank=True, null=True) science = models.URLField(blank=True, null=True) society = models.URLField(blank=True, null=True) def __str__(self): return self.school
Line上で受け取ったメッセージをもとにDjangoのデータベースに格納したデータをtarget_modelとしてフィルタリングし、tariget_modelに格納したデータをラインメッセージで返信するといったことをしたいと思い、以下のコードでtarget_modelに格納されたデータをfor文で回しそれぞれテキスト情報として表示できるのではないかと思い試しましたがなにも返信はきません。
@handler.add(MessageEvent, message=TextMessage) def handle_text_message(event): user_text = event.message.text target_model = models.School_exam.objects.filter( Q(school__school_name__icontains=user_text)|Q(year__icontains=user_text)) for item in target_model: line_bot_api.reply_message( event.reply_token, TextSendMessage(text=item))
また、試しにモデルを取り出すことはやめ単にLine上でテキストが送られたら「ok」と返信するコードに書き換えるとちゃんと返信ができたので、Djangoのモデルからデータを取り出しそれをLine上で表示する方法が根本的に間違っていると思います。
どのような手法でデータを取り出し表示させることができるのでしょうか?ご教授お願い致します。
0 コメント