0

Je veux envoyer une seule partie d'un objet au modèle.comment envoyer une seule partie d'un objet à un modèle dans django

I Have 2 modèles ci-dessous:

class Person(models.Model): 
    name = models.CharField(max_legth=50) 
    sure_name = models.CharFiled(max_length=50) 

class Office(models.Model): 
    location = models.CharField(max_legth=50) 

et moi avons aussi créé un modèle comme ci-dessous:

class PersonOffice(models.Model): 
    person = models.ForeignKey(Person) 
    office = models.ForeignKey(Office) 

maintenant, quand je prends des données de base de données, par PersonOffice.objects.all(), les données sont comme ci-dessous:

{ 
    { 
     "pk": 0, 
     "person": { 
      "pk":0, 
      "name":"Harry", 
      "sure_name":"Potter" 
      }, 
     "office":{ 
      "pk":5, 
      "location":"Toronto" 
     } 
    }, 
    { 
     "pk": 1, 
     "person": { 
      "pk":6, 
      "name":"John", 
      "sure_name":"Kelly" 
      }, 
     "office":{ 
      "pk":6, 
      "location":"NewYork" 
     } 
    } 
} 

Je veux envoyer seulement des bureaux au modèle par render foncti sur. Comment puis-je le faire? grâce

Updated Je veux l'utiliser dans le modèle avec boucle {% for %}. par exemple:

{% for office in Offices %} 
    <p>Office location: {{ office.location }}</p> 
{% endfor %} 

J'utilisé ci-dessous le code:

offices = PersonOffice.objects.all().values('office') 
print(offices) 

et ci-dessous est le résultat dans le terminal:

<QuerySet [{'office': 1}, {'office': 2}, {'office': 11}]> 
+2

Pouvez-vous poster votre fichier views.py pour montrer où vous êtes actuellement rendu? – csling

+0

Vous semblez sérialiser votre objet avant de l'envoyer au modèle, je ne sais pas pourquoi –

+0

no. Je ne les sérialise pas. juste pour un bon moyen d'affichage ici, je les affiche comme format json. – msln

Répondre

1

Vous pouvez utiliser values

PersonOffice.objects.values('office') 

Cette volonté sortir un jeu de requête avec office pour chaque objet.

EDIT:

PersonOffice.objects.values('office__location') 
+0

merci, j'ai changé la question. en utilisant 'values ​​()' je ne pourrais pas utiliser comme '{{office.location}}'. est un autre moyen? – msln

+0

oui vous pouvez utiliser. Les valeurs produisent également un jeu de requête. Voir aussi mon édition. @msln –

+0

J'ai écrit ce code: '{% pour office dans offices%} {{office.location}}
{% endfor%}' mais il ne me montre rien dans le fichier html – msln