質問編集履歴
3
インターネットで調べてソースコードを大幅に変更してみました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,14 +1,12 @@
|
|
1
|
-
|
1
|
+
少し自分で勉強してここまでたどり着いたのですが、まだエラーが消えません。
|
2
|
-
|
3
|
-
親テーブルにshijo名称が登録されていて、子テーブルにそのshijo名称に対応するレコードが存在するか確認するメソッドをsqlalchemyで作りたいと思っています。
|
4
2
|
|
5
3
|
|
6
4
|
|
7
|
-
|
5
|
+
djangoで外部キーを設定して、2つのテーブルを作っています。
|
8
6
|
|
9
7
|
|
10
8
|
|
11
|
-
|
9
|
+
結合したテーブルから情報をとったり更新したりしたいのですが、上手くいきません。
|
12
10
|
|
13
11
|
|
14
12
|
|
@@ -16,31 +14,39 @@
|
|
16
14
|
|
17
15
|
|
18
16
|
|
19
|
-
|
17
|
+
エラーメッセージ
|
18
|
+
|
19
|
+
sqlalchemy.exc.NoForeignKeysError: Could not determine join condition between parent/child tables on relationship Info.kanjis - there are no foreign keys linking these tables. Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint, or specify a 'primaryjoin' expression.
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
```
|
23
|
+
```dbtables
|
24
24
|
|
25
25
|
class Info(models.Model):
|
26
26
|
|
27
|
+
__tablename__ = 'posts_info'
|
28
|
+
|
29
|
+
info_id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, autoincrement = True)
|
30
|
+
|
27
31
|
code = models.CharField(verbose_name='code', max_length = 4)
|
28
32
|
|
29
|
-
s
|
33
|
+
created_timestamp_at = models.DateTimeField(verbose_name='登録日時', auto_now_add=True, null = True)
|
30
34
|
|
31
|
-
|
35
|
+
kanjis = relationship("Kanji", backref = "posts_kanjis")
|
32
36
|
|
33
37
|
|
34
38
|
|
35
39
|
class Kanji(models.Model):
|
36
40
|
|
37
|
-
|
41
|
+
__tablename__ = 'posts_kanji'
|
38
42
|
|
39
|
-
k
|
43
|
+
kanjiid = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, autoincrement=True)
|
44
|
+
|
45
|
+
info_id = sqlalchemy.Column(sqlalchemy.Integer, sqlalchemy.ForeignKey('Info.info_id',onupdate = 'CASCADE', ondelete = 'CASCADE'))
|
40
46
|
|
41
47
|
created_timestamp_at = models.DateTimeField(verbose_name='登録日時', auto_now_add=True)
|
42
48
|
|
43
|
-
|
49
|
+
infos = relationship("Info", backref = 'posts_kanji', foreign_keys = [Info.info_id])
|
44
50
|
|
45
51
|
```
|
46
52
|
|
@@ -48,7 +54,7 @@
|
|
48
54
|
|
49
55
|
```sqlalchemy
|
50
56
|
|
51
|
-
|
57
|
+
code = session.query(dbtables.Kanji).join(dbtables.Info, dbtables.Info.info_id == dbtables.kanji.info_id).all
|
52
58
|
|
53
59
|
|
54
60
|
|
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -53,5 +53,3 @@
|
|
53
53
|
|
54
54
|
|
55
55
|
```
|
56
|
-
|
57
|
-
本当はfilterを使ってidの特定をして変数nameにはshijo名称を返したいのですが、その入力方法もわかりませんでした。そもそも、そのような機能がないということは必要がないということでしょうか・・・・
|
1
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|