2010-07-24 4 views
1

Par exemple, j'ai deux objets de modèle, Personne et Adresse. L'adresse a une référence à un identifiant de personne. A quoi ressemblerait une requête qui les rassemblerait en un seul objet, ou n'est-ce pas possible avec Django?Est-il possible de joindre des types de modèles dans Django en un seul objet?

+0

Cette question est trop vague. Fournir plus de détails. – joel3000

+0

La réponse ci-dessous et le commentaire fournissent tous les détails nécessaires. Son code d'exemple est exactement ce que j'ai, mais sa solution ne suffit pas, car j'ai besoin de la direction inverse. – Rhubarb

+1

Si vous modifiez votre question pour plus de clarté (avec des exemples), vous obtiendrez de meilleures réponses, au lieu que les personnes aient à deviner ce que vous essayez de demander. –

Répondre

1

Avoir une lecture du Django docs on related objects. Passer d'une personne à une adresse associée équivaut à passer d'un blog à ses entrées associées dans les exemples.

Si vous avez une personne, vous pouvez faire person.address_set.all() pour obtenir toutes les adresses pour cette personne.

Si chaque personne n'a qu'une seule adresse, utilisez un OneToOneField, et vous pouvez utiliser person.address pour obtenir l'adresse.

2

Je ne sais pas exactement ce que vous essayez de demander, mais je vais essayer.

Je vais supposer que vos modèles ressemblent à:

class Person(models.Model) 
    first_name = models.CharField() 
    last_name = models.CharField() 

class Address(models.Model) 
    person = models.ForeignKey(Person) 
    street = models.CharField() 
    city = models.CharField() 
    state = models.CharField() 

Maintenant, obtenir une adresse:

address = Address.objects.get(id=address_id) 

Ensuite, vous pouvez faire référence à la personne comme ceci:

address.person.first_name 
+0

Bien, mais mon problème est que je ne connais pas l'adresse, je connais la personne. Donc j'ai besoin de trouver l'adresse de la personne, ou de préférence être capable de se référer à l'adresse d'une personne. – Rhubarb

+1

Dans ce cas, vous pouvez faire quelque chose comme. adresse = Address.objects.all() filtre (personne = personne) Ou, si vous avez juste l'ID de personne, quelque chose comme:.. adresse = Address.objects.all() filtre (person__id = person_id) – ablerman

Questions connexes