2016-07-26 7 views
0

Ich versuche, eine Linkertabelle für eine viele zu viele Beziehung zwischen diesen beiden Tabellen zu erstellen. Die dritte Tabelle enthält die cand_id aus der ersten Tabelle und die p_id aus der zweiten Tabelle. Hier ist mein Code im Kandidaten und P_user classes in Modellen und den Tabellen von MariaDB. Wenn ich die ManyToManyField-Option in meinem Candidate-Modell verwende, zieht es immer den Vornamen der Benutzer statt ihrer p_id.Django - ManyToMany Tabelle zieht die falsche Info

Erstes Modell:

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) 

Zweites Modell:

class Candidate(models.Model) 

    .... 
    associated_hm = models.ManyToManyField(P_user, 
          blank  = True) 
    .... 

DB Darstellung:

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 |    | 


+------------------------+--------------+------+-----+---------+----------------+ 

Next one:

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

Bitte korrigieren Sie die Formatierung Ihrer Frage. – khajvah

+1

Und erklären Sie, was Sie mit "es zieht den Vornamen der Benutzer anstelle ihrer p_id ziehen." Wo macht es das? Welchen Code läufst du, um dieses Ergebnis zu erhalten? Genau was siehst du? –

+0

Ich kopiere Ihren Code eingefügt, kann aber das Problem nicht reproduzieren: / – allcaps

Antwort

0

Dies kann eine lange Sicht sein, da Ihre Frage den Kontext Ihrer falschen Ausgabe nicht klar macht, aber wenn Sie nur auf yourmodel.associated_hm verweisen, sehen Sie einen Verweis auf das zugehörige_hm-Objekt.

Um die p_id zu erhalten, müssten Sie explizit in Ihrer Abfrage wie folgt verweisen yourmodel.associated_hm.p_id.

Verwandte Themen