質問編集履歴

2

説明の修正、ソースを添付しました

2020/07/01 08:04

投稿

sandalwalk
sandalwalk

スコア77

test CHANGED
File without changes
test CHANGED
@@ -154,10 +154,20 @@
154
154
 
155
155
  ```
156
156
 
157
- 出力結果例
157
+ 出力結果例(入力した順に出力されている)
158
158
 
159
159
  1 中村太郎
160
160
 
161
161
  3 小林次郎
162
162
 
163
163
  2 山田花子
164
+
165
+
166
+
167
+ 希望する出力結果(idの順にしたい)
168
+
169
+ 1 中村太郎
170
+
171
+ 2 山田花子
172
+
173
+ 3 小林次郎

1

説明の変更、ソースコードを添付しました

2020/07/01 08:04

投稿

sandalwalk
sandalwalk

スコア77

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,24 @@
1
- flask+SQLAlchemyで簡単なテーブルを作成します。但し、各行のidは登録される生徒の出席番号を登録します。一旦登録した情報を書き直したりした後に、テーブルの行に格納されている登録情報をidの番号順に並べ替えるにはどうすれば良いでしょうか。order_byを試してみましたが、上手動作しません。。
1
+ flask+SQLAlchemyで簡単なテーブルを作成します。但し、各行のidは登録される生徒の出席番号を登録します。登録時には必ずしも出席番号順に登録するとは限らない為、一旦登録した登録情報をidの番号順に並べ替えるにはどうすれば良いでしょうか。order_byを試してみましたが、出力はid順ではな、登録された順になってしまいますメインプログラムと対応するhtmlのソースは以下の通りです
2
2
 
3
3
 
4
4
 
5
5
  ``` python
6
+
7
+ from flask import Flask, request, render_template
8
+
9
+ from flask_sqlalchemy import SQLAlchemy
10
+
11
+
12
+
13
+ app = Flask(__name__)
14
+
15
+
16
+
17
+ app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/testdb'
18
+
19
+ db = SQLAlchemy(app)
20
+
21
+
6
22
 
7
23
  class Meibo(db.Model):
8
24
 
@@ -12,18 +28,136 @@
12
28
 
13
29
  name = db.Column(db.Text())
14
30
 
31
+
32
+
33
+ @app.route('/list', methods=['GET'])
34
+
15
- point = db.Column(db.Integer)
35
+ def input_list():
16
36
 
17
37
 
18
38
 
19
- #途中、登録、更新などの処理、、、
39
+ return render_template('registername.html')
20
40
 
21
- #最後に
22
41
 
23
- db.session.query(Meibo).order_by(Meibo.id).all()
24
42
 
43
+
44
+
45
+ @app.route('/list', methods=['POST'])
46
+
47
+ def register_list():
48
+
49
+
50
+
51
+ seito = Meibo()
52
+
53
+
54
+
55
+ seito.id = request.form["id"]
56
+
57
+ seito.name = request.form["name"]
58
+
59
+
60
+
61
+
62
+
63
+ db.session.add(seito)
64
+
25
- db.session.commit()
65
+ db.session.commit()
66
+
67
+
68
+
69
+ db.session.query(Meibo).order_by(Meibo.id)
70
+
71
+ db.session.commit()
72
+
73
+
74
+
75
+ meibo = Meibo.query.all()
76
+
77
+
78
+
79
+ return render_template('namelist.html', meibo = meibo)
80
+
81
+
82
+
83
+
84
+
85
+ if __name__ == '__main__':
86
+
87
+ db.create_all()
88
+
89
+ app.run(debug = True)
90
+
91
+ ```
92
+
93
+ ```html
94
+
95
+ <!-- namelist.html --->
96
+
97
+ {% extends 'layout.html' %}
98
+
99
+ {% block content %}
100
+
101
+
102
+
103
+ <table>
104
+
105
+ {% for seito in meibo %}
106
+
107
+ <tr>
108
+
109
+ <td>{{ seito.id }}</td>
110
+
111
+ <td>{{ seito.name }}</td>
112
+
113
+ </tr>
114
+
115
+ {% endfor %}
116
+
117
+ </table>
118
+
119
+
120
+
121
+ {% endblock %}
26
122
 
27
123
 
28
124
 
29
125
  ```
126
+
127
+ ```html
128
+
129
+ <!--- registername.html --->
130
+
131
+ {% extends 'layout.html' %}
132
+
133
+ {% block content %}
134
+
135
+
136
+
137
+
138
+
139
+ <form action="/list" method="post">
140
+
141
+ <input type="number" name="id">
142
+
143
+ <input type="text" name="name">
144
+
145
+
146
+
147
+
148
+
149
+ <button type="submit">名簿に登録</button>
150
+
151
+
152
+
153
+ {% endblock %}
154
+
155
+ ```
156
+
157
+ 出力結果例
158
+
159
+ 1 中村太郎
160
+
161
+ 3 小林次郎
162
+
163
+ 2 山田花子