2009-10-21 10 views
10

Tengo un conjunto de consulta en Django que llama a Model.objects.values('item') ... donde 'item' es una clave externa.Mostrar valores de Django() en clave externa en la plantilla como objeto en lugar de su id

class Words(models.Model): 
    word = models.CharField() 

class Frequency(models.Model): 
    word = models.ForeignKey(Words) 
    ... 

Esto devuelve la identificación del artículo y se muestra como una identificación en la plantilla. ¿Cómo se muestra el valor real del artículo en la plantilla en lugar de la identificación?

Respuesta

12

Para referir propiedades de elementos de clave externa, debe usar la notación de búsqueda '__' en los campos. MyModel.objects.values('item__prop1', 'item__prop2', ...) debería funcionar para usted.

Y puede imprimirlo en plantillas haciendo referencia a los nombres de propiedades como este, cuando el nombre de la variable de plantilla para el resultado es values.

{% for v in values %} 
    Prop1: {{ v.item__prop1 }} 
    Prop2: {{ v.item__prop2 }} 
    ... 
{% endfor %} 
+3

Obviamente Achimnoi utilizaba 'prop1' como un ejemplo - que debe hacer 'Model.objects.values ​​('word__word')' en la vista y '{{}}' v.word__word en la plantilla. –

+0

Gracias, funcionó maravillosamente. – simi

+0

gracias por compartir! – Xiwen

Cuestiones relacionadas