2016-07-26 14 views
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 |  | 

+------------------+-------------+------+-----+---------+-------+ 
+0

質問の書式を修正してください。 – khajvah

+1

そして、「あなたのp_idの代わりにユーザーの名前を引っ張ってくる」という意味を説明してください。それはどこで行うのですか?あなたはその結果を得るためにどのようなコードを実行していますか?まったく何が見えますか? –

+0

貼り付けたコードをコピーしましたが、問題を再現できません:/ – allcaps

答えて

0

あなたの質問が間違った出力の文脈をはっきりさせることはないが、あなたがyourmodel.associated_hmを参照しているだけの場合は、associated_hmオブジェクトへの参照が表示されるので、これは長いことかもしれない。

p_idを取得するには、yourmodel.associated_hm.p_idのようにクエリで明示的に参照する必要があります。

関連する問題