2014-09-25 14 views
5

Ich kann die Spalte einer anderen Tabelle, die verbunden ist, nicht lesen. Es wirft AttributePeewee bekomme Spalte nach Join

class Component(Model): 
    id = IntegerField(primary_key=True) 
    title = CharField() 

class GroupComponentMap(Model): 
    group = ForeignKeyField(Component, related_name='group_fk') 
    service = ForeignKeyField(Component, related_name='service_fk') 

Nun ist die Abfrage

comp = (Component 
     .select(Component, GroupComponent.group.alias('group_id')) 
     .join(GroupComponent, on=(Component.id == GroupComponent.group)) 
     ) 

for row in comp: 
    print row.group_id 

Jetzt ist ich einen Fehler AttributeError: 'Component' object has no attribute 'group_id'

+0

Reihe hat attrs 'id' und' title', was Sie tun gemein von 'group_id'? – hyades

+1

im 'select' habe ich' GroupComponent.group.alias ('group_id') 'hinzugefügt, also möchte ich den Wert von' group_id' erhalten – Rishabh

Antwort

6

Wenn Sie nur direkt die group_id auf das ausgewählte Component Attribut wollen patchen, rufen .naive(). Dies weist peewee, die Sie wollen nicht die grafische Darstellung der verbundenen Modelle zu rekonstruieren - Sie wollen einfach nur alle Attribute auf einer einzigen Komponente Instanz gepatcht:

for row in comp.naive(): 
    print row.group_id # This will work now.