質問編集履歴
3
外部キーのミスがあったため修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,15 +16,15 @@
|
|
16
16
|
company_id = models.BigAutoField(primary_key=True,validators=[MaxValueValidator(8)])
|
17
17
|
company_code = models.IntegerField()
|
18
18
|
company_name = models.CharField(max_length=255)
|
19
|
-
company_code = models.ForeignKey('
|
19
|
+
company_code = models.ForeignKey('Company', on_delete=models.CASCADE,null=True,)
|
20
|
-
staff_code = models.ForeignKey('
|
20
|
+
staff_code = models.ForeignKey('Staff', on_delete=models.CASCADE,null=True,)
|
21
21
|
|
22
22
|
```
|
23
23
|
マイグレーションを行うと
|
24
24
|
|
25
25
|
```migrations
|
26
26
|
migrations.CreateModel(
|
27
|
-
name='
|
27
|
+
name='Company',
|
28
28
|
fields=[
|
29
29
|
('company_id', models.BigAutoField(primary_key=True, serialize=False, validators=[django.core.validators.MaxValueValidator(8)])),
|
30
30
|
('company_name', models.CharField(max_length=255)),
|
2
migrationの追加。Djangoバージョンの追加。別途、解決案の追加。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# 前提
|
2
|
-
Python
|
2
|
+
Python==3.9.10
|
3
|
-
Django
|
3
|
+
Django==3.2.12
|
4
4
|
MySQL
|
5
5
|
モデルの定義について。
|
6
6
|
|
@@ -13,10 +13,24 @@
|
|
13
13
|
|
14
14
|
```models.py
|
15
15
|
class Company(models.Model):
|
16
|
+
company_id = models.BigAutoField(primary_key=True,validators=[MaxValueValidator(8)])
|
16
17
|
company_code = models.IntegerField()
|
17
18
|
company_name = models.CharField(max_length=255)
|
18
|
-
company_code = models.ForeignKey('
|
19
|
+
company_code = models.ForeignKey('Org_division', on_delete=models.CASCADE,null=True,)
|
19
|
-
staff_code = models.ForeignKey('
|
20
|
+
staff_code = models.ForeignKey('Org_staff', on_delete=models.CASCADE,null=True,)
|
21
|
+
|
22
|
+
```
|
23
|
+
マイグレーションを行うと
|
24
|
+
|
25
|
+
```migrations
|
26
|
+
migrations.CreateModel(
|
27
|
+
name='Org_division',
|
28
|
+
fields=[
|
29
|
+
('company_id', models.BigAutoField(primary_key=True, serialize=False, validators=[django.core.validators.MaxValueValidator(8)])),
|
30
|
+
('company_name', models.CharField(max_length=255)),
|
31
|
+
('company_code', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='admin.company')),
|
32
|
+
],
|
33
|
+
),
|
20
34
|
```
|
21
35
|
上記のモデルでマイグレートを行った結果、データベースには
|
22
36
|
```ここに言語を入力
|
@@ -27,7 +41,7 @@
|
|
27
41
|
| company_id | bigint | NO | PRI | NULL | auto_increment |
|
28
42
|
| company_name | varchar(255) | NO | | NULL | |
|
29
43
|
| company_code_id | bigint | YES | MUL | NULL | |
|
30
|
-
|
|
44
|
+
| staff_code_id | bigint | YES | MUL | NULL | |
|
31
45
|
+----------------------+--------------+------+-----+---------+----------------+
|
32
46
|
4 rows in set (0.02 sec)
|
33
47
|
```
|
@@ -35,7 +49,14 @@
|
|
35
49
|
外部キーでも同じカラムがあると、一方のカラムは消されてしまうのでしょうか?
|
36
50
|
そもそも同じカラム名にすんなよっていうのはわかるのですが、こちら気になったためご質問させて頂きました。よろしくお願い致します。
|
37
51
|
|
38
|
-
こちらで回答が得られないかと思い、stackoverflowサイトへ同じ内容を記載しております。
|
39
|
-
|
52
|
+
またご指摘頂いて、migrationファイル記載するために確認するとcompany_code(IntegerField)とstaff_codeがありませんでした。staff_codeは、マイグレーションファイルにはありませんが、マイグレートすると、MySQLにstaff_code_id として反映されておりました。
|
40
53
|
|
54
|
+
解決策として、
|
55
|
+
https://teratail.com/questions/218930
|
56
|
+
こちらの記事より、db_column='main_id'を指定することで、Djangoが勝手に外部キーのカラムにidをつけなくなると見たので、外部キーに関してはカラム名を「company_code_id」「staff_code_id」にしようかと思っております。
|
41
57
|
|
58
|
+
話がずれましたが、
|
59
|
+
>MySQLを見てみると、company_code というカラムがありませんでした。
|
60
|
+
>外部キーでも同じカラムがあると、一方のカラムは消されてしまうのでしょうか?
|
61
|
+
こちらお願い致します。
|
62
|
+
|
1
規約違反していたため修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -35,3 +35,7 @@
|
|
35
35
|
外部キーでも同じカラムがあると、一方のカラムは消されてしまうのでしょうか?
|
36
36
|
そもそも同じカラム名にすんなよっていうのはわかるのですが、こちら気になったためご質問させて頂きました。よろしくお願い致します。
|
37
37
|
|
38
|
+
こちらで回答が得られないかと思い、stackoverflowサイトへ同じ内容を記載しております。
|
39
|
+
https://ja.stackoverflow.com/questions/88153
|
40
|
+
|
41
|
+
|