2011-08-22 14 views
5

tengo 2 modelos de Django:¿Cómo leer la clave principal de una clave externa sin cargar el elemento correspondiente?

class A(models.Model): 
    uniq_name = models.CharField(max_length=30,primary_key=True) 
    info1 = models.CharField(max_length=30)  
    info2 = models.CharField(max_length=30) 

class B(models.Model): 
    a = models.ForeignKey(A) 
    info3 = models.CharField(max_length=30)  
    info4 = models.CharField(max_length=30) 

si lo hago:

b = B.objects.get(id = n), it generates one database request. 

Si hago

print b.a.pk : it generate another request. 

¿Es eso posible ba de acceso clave principal (que sólo necesitará esta información , no info1 ni info2) sin generar otra solicitud ni usar 'select_related()'?

que podía hacer un:

print b.__dict__['a_id'] 

funciona, pero me parece muy feo: ¿tienes una manera más agradable?

Respuesta

5

No necesita pasar por el diccionario: b.a_id funciona bien.

+0

Eso es muy importante en mi caso, porque necesito cargar la fila relacionada con FOR UPDATE. – lvella

Cuestiones relacionadas