Django - Get clé Étrangère objets dans une seule requête?
Je suis la recherche de django clés étrangères un peu déroutant, est-il possible de faire la vue ci-dessous, à l'aide d'une seule requête?
# Model
class Programme(models.Model):
name = models.CharField(max_length = 64)
class Actor(models.Model):
programme = models.ForeignKey(Programme)
name = models.CharField(max_length = 64)
# View
def list_actors( request, programme_id):
programme = Programme.objects.filter(id = programme_id)[0]
actors = Actor.objects.filter(programme = programme_id)
json = simplejson.dumps( [{
'name': str(actor.name),
'rating': str(actor.rating),} for actor in actors] )
return HttpResponse(json, mimetype='application/javascript')
OriginalL'auteur Stuart Axon | 2010-03-02
Vous devez vous connecter pour publier un commentaire.
Vous interrogez
Programme
et d'attribuer à laprogramme
, mais vous n'utilisez jamais le résultat de n'importe où. Tout simplement supprimer cette ligne.OriginalL'auteur Ignacio Vazquez-Abrams
Je pense que vous êtes à la recherche de quelque chose comme ça:
https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related
qui sont select_related, vous mettez de l'avant de l'obtenir.
C'est votre ligne:
devrait ressembler à
Malheureusement, comme l'a souligné ici: obtenez de clé étrangère objets dans une requête unique - Django vous ne serez en mesure de récupérer les acteurs de cette façon que select_related ne fonctionne que sur les objets ayant les clés étrangères et non pas vice versa.
select_related
ne serait nécessaire que si vous voulais accèsactor.programme.name
sans un supplément de DB frappé par l'acteur. Sinon c'est du superflu.OriginalL'auteur Alexey Vassiliev