質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Q&A

解決済

1回答

270閲覧

model.pyの関数を呼び出す方法,或いはforms.formでMySQL(DB)にデータを登録する方法を知りたい

hatte

総合スコア4

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

0グッド

0クリップ

投稿2023/02/02 13:33

編集2023/02/02 14:41

実現したいこと

models.pyに書かれた関数をview.pyにて呼び出したい。

前提

それぞれのファイルは以下のようになっています。

view.py

1 2from django.shortcuts import render 3from django.http import HttpResponse 4from .forms import ContactForm 5from django.views import View 6fname()

models.py

1from django.db import models 2def fname(): 3 print(‘text’) 4return print(‘string’)

発生している問題・エラーメッセージ

NameError at / name 'fname' is not defined

補足情報(FW/ツールのバージョンなど)

そもそもはFormsによってMySQLにHTMLのformからPOSTした値を
した値を登録登録したいと思っていました。
以下のAはmodels.pyにあるclass Aを呼び出していると認識しているのですが、該当するものがない、というようなメッセージがでます。

models.py

1from django.db import models 2class A(models.Model): 3 id = models.IntegerField(primary_key=True) 4 def __str__(self): 5 return self.id 6

views.py

1 2from django.shortcuts import render 3from django.http import HttpResponse 4from .forms import ContactForm 5from django.views import View 6 7def index_template(request): 8 form = ContactForm(request.POST or None) 9 if form.is_valid(): 10 a=form.cleaned_data["a"] 11 b=form.cleaned_data["b"] 12 obj=A(a=a,b=b) 13 obj.save() 14

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuma.inaura

2023/02/02 14:58

二つの問題はどう関係してるんでしょう?全く別々の問題なんでしょうか
hatte

2023/02/02 19:29

私の認識が間違っている可能性は高いのですが、HTMLのformからPOSTした値を受け取ってデータベースに保存する際にviews.pyからmodels.pyで作ったclassを呼び出す、という過程があると思うのですが、呼び出そうとすると、そんなのないよ、とエラーが返されるのです。 二つの問題というより、forms.Formを利用して作ったHTMLからPOSTした値をMySQLへ登録したいというのが本題なのですが、話が具体的すぎない方がすぐに回答が見つかるかなと思ったのです。
hatte

2023/02/02 19:36

もしかしたらforms.pyに書くべきものをmodels.pyに書いているのかもしれないです。
guest

回答1

0

自己解決

回答にあった通りimportがない為でした。参考にしていたサイトにもなかった為、そこが問題だとは思いませんでしたがpythonの基礎がないままdjangoを利用しようとしていたのがいけなかったです。

投稿2023/02/04 16:42

hatte

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問