0
私は、これらの2つのテーブル間の多対多の関係のリンカテーブルを作成しようとしています。 3番目のテーブルは、最初のテーブルのcand_id
と2番目のテーブルのp_id
を持ちます。ここに候補者のコードとモデルのP_user classes
とMariaDBのテーブルがあります。候補モデルでManyToManyFieldオプションを使用すると、p_id
の代わりにユーザーのファーストネームが引き続き保持されます。Django - ManyToManyテーブルが間違った情報を引き出す
最初のモデル:
class P_user(models.Model):
''' Proxy database model to extend Django User with profile data.'''
user = models.ForeignKey(User)
p_id = models.CharField(primary_key = True)
phone = models.CharField(max_length = 20,
default = '',
blank = True)
password = models.CharField(max_length = 30,
default = '',
blank = True)
confirm_password = models.CharField(max_length = 30,
default = '',
blank = True)
roles = models.CharField(max_length = 30,
default = '',
blank = True)
第モデル:
class Candidate(models.Model)
....
associated_hm = models.ManyToManyField(P_user,
blank = True)
....
DB表現:
MariaDB [mantis]> describe prog_port_candidate;
+------------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+--------------+------+-----+---------+----------------+
| cand_id | int(11) | NO | PRI | NULL | auto_increment |
| first_name | varchar(20) | NO | | NULL | |
| last_name | varchar(20) | NO | | NULL | |
+------------------------+--------------+------+-----+---------+----------------+
次に1:
MariaDB [mantis]> describe prog_port_p_user;
+------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+-------+
| p_id | varchar(8) | NO | PRI | NULL | |
| phone | varchar(20) | NO | | NULL | |
| password | varchar(30) | NO | | NULL | |
| confirm_password | varchar(30) | NO | | NULL | |
| roles | varchar(30) | NO | | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
+------------------+-------------+------+-----+---------+-------+
質問の書式を修正してください。 – khajvah
そして、「あなたのp_idの代わりにユーザーの名前を引っ張ってくる」という意味を説明してください。それはどこで行うのですか?あなたはその結果を得るためにどのようなコードを実行していますか?まったく何が見えますか? –
貼り付けたコードをコピーしましたが、問題を再現できません:/ – allcaps