2016-07-07 5 views
0

I-Daten über zwei verknüpften Tabellen mit einem Filter über den inneren Tischdjango Auswahldaten mit Filter über einen inneren Tisch

Hier meine Modelle wählen wird:

class tbl1(models.Model): 
    id1 = models.AutoField(db_column='id1', primary_key=True) 
    id2 = models.ForeignKey(tbl2, models.PROTECT, db_column='id2', blank=True, null=True) 
    val = models.CharField(max_length=30, blank=True, null=False) 
    ... 

class tbl2(models.Model): 
    id2 = models.AutoField(db_column='id2', primary_key=True) 
    order = models.CharField(max_length=30, blank=True, null=False) 
    .... 

Ich brauche diese SQL-Statement:

select id1, val 
from tbl1 
inner join tbl2 on tbl1.id2=tbl2.id2 
WHERE order='xyz' 

ich versuche:

obj = tbl1.objects.select_related('id2').filter(order='xyz') 

Ich habe diesen Fehler:

FieldError: Kann nicht lösen Stichwort 'bestellt' in dem Feld ...

Was ist falsch?

thx Frank

Antwort

0

sollten Sie tun

obj = tbl1.objects.select_related('id2').filter(id2__order='xyz') 
#           ------^ 

relationshipfield__modelfield die Konvention in django auf den Modellen mit dem ein Modell Beziehung hat zu filtern ist.

Sollte dies in Tutorial oder Referenzdokumente finden.

+0

thx, es funktioniert. Ich bin im Moment sehr verwirrt über die "Querysets und all das". Ich bin gut in sql (auch komplexe sql-Anweisungen), aber um das in "queryset-language" wieder aufzubauen, ist es sehr schwer ;-) – FrankL