2017-12-09 6 views
0

Ich habe eine Parent Model, die eine Foreign Key verwendet, die auf eine Child Model zeigt. In diesem Fall wird das "Kindmodell" Mstrgensalutationtype genannt (was wirklich Salutations ist).Modell Formular Dropdown-Feld (Auswahl) zeigt keine korrekten Zeilen zur Auswahl an

Die Parent Model verwendet wird, um eine Model Form

Grundsätzlich zu schaffen, ist unten, was ich bekomme, wenn eine Anrede Typ zu wählen versuchen.

enter image description here

Was ich sehe, müssen, ist

Mr. 
Ms. 
Mrs. 
Prof. 
Dr. 

Frage: Was ich hier falsch mache?

TIA

models.py - als Kind Modell

class Mstrgensalutationtype(models.Model): 
    saltypeid = models.BigIntegerField(primary_key=True) 
    lang = models.CharField(max_length=2, blank=True, null=True) 
    shortval = models.CharField(max_length=7, blank=True, null=True) 
    salutationlong = models.CharField(max_length=20, blank=True, null=True) 

    class Meta: 
     managed = False 
     db_table = 'MstrGenSalutationType' 

     def __unicode__(self): 
      return u'%s ' % (self.shortval) 

models.py - als Elternteil Modell

class Mstrstorehead(models.Model): 
    tenantid = models.BigIntegerField(primary_key=True) 
    extrefacctno = models.CharField(max_length=20, blank=True, null=True, verbose_name="Account Reference No") 

[... snip ...] 

    contactsalutationid = models.ForeignKey(Mstrgensalutationtype, models.DO_NOTHING, db_column='contactsalutationid', blank=True, null=True, verbose_name="Salutation") 

[... snip ...] 


    class Meta: 
     managed = False 
     db_table = 'MstrStoreHead' 

aktualisieren

verwendet Ich bin ade die folgende Änderung unten - aber immer noch das gleiche Problem.

class Mstrgensalutationtype(models.Model): 
    saltypeid = models.BigIntegerField(primary_key=True) 
    lang = models.CharField(max_length=2, blank=True, null=True) 
    shortval = models.CharField(max_length=7, blank=True, null=True) 
    salutationlong = models.CharField(max_length=20, blank=True, null=True) 

    class Meta: 
     managed = False 
     db_table = 'MstrGenSalutationType' 

    def __unicode__(self): 
     return u'%s ' % (self.shortval) 
+0

Welche Python-Version verwenden Sie? Überprüfen Sie auch Ihren Einzug - wie Sie ihn gerade gepostet haben, befindet sich die Methode innerhalb der Meta-Klasse, die nicht dort ist, wo sie sein sollte (sie muss selbst in der Klasse Mstrgensalutationtype sein). – solarissmoke

+0

@solarissmoke - danke für die Antwort. Auch, PLZ sehen Änderungen in der Post. Außerdem laufe ich mit Python: 3.6.3 - Stimmt etwas nicht mit meiner Fremdschlüsseldefinition? –

Antwort

2

__unicode__ Die Methode ist nur dann gültig, in Pythonschlange 2 - it doesn't do anything in Python 3. Sie müssen __str__ stattdessen verwenden:

def __str__(self): 
    return self.shortval 

Beachten Sie auch, dass die u String-Präfix in Python 3. Alle Strings sind Unicode standardmäßig redundant ist.

Wenn Sie beide Python 2 und 3 unterstützen müssen, dann verwenden Sie python_2_unicode_compatible wie im obigen Link beschrieben.

+0

Ja! Das war's! Danke soooooo viel! –

Verwandte Themen