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

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

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

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

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

497閲覧

django 特定のレコード中から特定の変数を取得したい

LUCKEY113

総合スコア4

Django

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

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2023/01/16 08:29

前提

djangoを勉強中ですが,あまり理解度は高くありません.

レコード内から特定の変数を取得し,そのままMeCabにかけたいと考えています.
そのために1レコードの内1つの変数を取得したいと考えています.

例えば
名前 年齢 性別 血液型
花子 20  女  AB
太郎 21  男  B

のテーブルがあったとき,「女」というピンポイントのデータを取得したい
というような感じです.

説明が下手だと思いますがよろしくお願いします.

実現したいこと

レコード内のデータを1つだけ取得したい

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

data = IdeaModel.objects.all().values('idea1') とすると全レコードのidea1が取得される
data = IdeaModel.objects.get(paper=1,section=1) とするとTypeErrorになる
data = IdeaModel.objects.filter(paper=1,section=1) とするとpaper=1,section=1であるレコードが1行取得される

というようになり前提で示したピンポイントなデータが取得できていません.

該当のソースコード

index.html

1{% load static %} 2<!doctype html> 3<html lang="ja"> 4<head> 5 <meta charset="utf-8"> 6 <title>{{title}}</title> 7 <link rel="stylesheet" 8 href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" 9 crossorigin="anonymous"> 10</head> 11<body class="container"> 12 <h1 class="display-4 text-primary">{{title}}</h1> 13 <p class="h5 mt-4">{{message|safe}}</p> 14 <table class="table"> 15 <tr> 16 <th>ID</th> 17 <th>paper</th> 18 <th>section</th> 19 <th>name</th> 20 <th>idea1</th> 21 <th>idea2</th> 22 23 </tr> 24 {% for item in data %} 25 <tr> 26 <td>{{item.id}}</td> 27 <td>{{item.paper}}</td> 28 <td>{{item.section}}</td> 29 <td>{{item.name}}</td> 30 <td>{{item.idea1}}</td> 31 <td>{{item.idea2}}</td> 32 <tr> 33 {% endfor %} 34 </table> 35</body> 36</html>

views.py

1def index(request): 2 data = IdeaModel.objects.all().values('idea1') 3 params = { 4 'title': 'Hello', 5 'message': 'all friends.', 6 'data': data, 7 } 8 return render(request, 'hello/index.html', params)

forms.py

1from django import forms 2from.models import IdeaModel 3 4class IdeaForm(forms.ModelForm): 5 class Meta: 6 model = IdeaModel 7 fields = ['paper','section','name','theme','idea1','idea2','idea3','idea4','idea5' 8 ,'idea6','idea7','idea8','idea9','idea10']

models.py

1from django.db import models 2 3 4class IdeaModel(models.Model): 5 paper = models.IntegerField() 6 section = models.IntegerField() 7 name = models.IntegerField() 8 theme = models.CharField(max_length=50) 9 idea1 = models.CharField(max_length=50) 10 idea2 = models.CharField(max_length=50, blank=True, null=True) 11 idea3 = models.CharField(max_length=50, blank=True, null=True) 12 idea4 = models.CharField(max_length=50, blank=True, null=True) 13 idea5 = models.CharField(max_length=50, blank=True, null=True) 14 idea6 = models.CharField(max_length=50, blank=True, null=True) 15 idea7 = models.CharField(max_length=50, blank=True, null=True) 16 idea8 = models.CharField(max_length=50, blank=True, null=True) 17 idea9 = models.CharField(max_length=50, blank=True, null=True) 18 idea10 = models.CharField(max_length=50, blank=True, null=True) 19 20 def __str__(self): 21 return 'アイデア ' + 'paper:' + str(self.paper) + ' ・section:' + str(self.section) + ' ・name:' + str(self.name) 22

試したこと

エラーメッセージにも示したようにviews.pyの1文を以下のように変えたりしました.

data = IdeaModel.objects.all().values('idea1') とすると全てのidea1が取得される
というようになり,paperが1,sectionが1であるidea1を取得することができませんでした.

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

django4.14
python3.10.8
windouws 10

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

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

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

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

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

guest

回答2

0

ベストアンサー

py

1IdeaModel.objects.filter(paper=1,section=1).first().idea1

とかでしょうか

投稿2023/01/16 12:46

yuma.inaura

総合スコア1451

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

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

LUCKEY113

2023/01/18 07:07

ありがとうございます!無事できました! 時間があればどういう構造で表示されるようになっているのかご教示いただきたいです…
guest

0

data = IdeaModel.objects.filter(paper=1,section=1).values('idea1')

としたら取得することができました.
ご回答いただきありがとうございました.

投稿2023/01/17 12:09

LUCKEY113

総合スコア4

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

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

LUCKEY113

2023/01/18 07:09

こちら勘違いでした. これでも取得できましたが,Querysetで表示されるようで 実現したいこととは違うようになっていました. ベストアンサーの方のやり方が合っていました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問