移行ツールを使用せずにデータベーステーブルを更新しようとしているdjangoプロジェクトがあります。私は単純にその名前を参照するモデルに「スラッグ」フィールドを追加していますが、私は既にスラッグを持っている別のテーブルにあるものを複製することを考えていました。名前フィールドに結び付けられたデータベースにスラッグフィールドを作成する
ので、
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| gym_name | varchar(50) | NO | UNI | NULL | |
| gym_slug | varchar(50) | NO | MUL | NULL | |
| created | datetime | NO | | NULL | |
| modified | datetime | NO | | NULL | |
+----------+--------------+------+-----+---------+----------------+
を次のように私は、データベース内の既存のテーブル「ジム」を持っているし、次のように私は、データベース内の別のテーブル「壁」を持っている:
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| wall_name | varchar(50) | NO | UNI | NULL | |
| gym_id | int(11) | NO | MUL | NULL | |
| created | datetime | NO | | NULL | |
| modified | datetime | NO | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
これはなるだろう私が道の一部:
ALTER TABLE wall ADD COLUMN wall_slug varchar(50);
しかし、私はどこにある外部キーを把握する方法かどうか分かりません最初のテーブルは参照しているので、新しいテーブルを指す必要があります。
最終目標:wall_slugフィールドは、一意のwall_nameフィールドに関連付けられています。希望は意味をなさない。
「最初のテーブルの外部キーが参照する場所を特定する方法がわからないため、新しいキーを指す必要があります。」あなたは外部フィールドではなく、テキストフィールドを追加していますよね?また、 "ALTER TABLE wall ADD COLUMN wall_slug varchar(50)"を意味しますか? – Rob
後者の質問に関しては、はい - 適切なクエリを反映するように編集しました。あなたの最初の質問については、テーブルが私に見せているものを誤解しているかもしれませんが、gym.gym_nameとgym.gym_slugはモデルレベルだけでなくDBレベルでも関連しているようです。私は何とかwall.wall_slugにwall.wall_nameを関連付けるために同じことをしなければならないと仮定していますが、どうすればよいか分かりません。 – IanWhalen