J'ai un modèle (ou en fait 2 modèles, mais l'autre est pas pertinent)Comment obtenir un QuerySet django de tous ForeignKeys de tous les objets dans un queryset
class Foo(models.Model):
...
bar = models.ForeignKey(Bar,
...
)
Quand j'ai un QuerySet de Foo
: s, comment puis-je obtenir toutes les instances Bar
référencées par ce QuerySet?
Depuis que je suis en utilisant MySQL, je ne peux pas faire .distinct(['bar'])
Voici un lien vers la [ 'in'] (https://docs.djangoproject.com/en/dev/ref/models/querysets/# in) recherche dans les docs. –
Je suis curieux, à quel point est-ce efficace et est-il possible de le faire plus efficacement? – Algorithmatic
@Algorithmatic - c'est une question très large, cela dépend de la base de données que vous utilisez, des données et des index sur ces données. Exécuter ceci sur MySQL peut être terriblement lent car MySQL est terrible à gérer les sous-requêtes que génère Django. Pour contourner ce problème, vous pouvez effectuer une requête pour obtenir le 'bar_ids' et ensuite passer à la clause' __in' 'Bar.objects.filter (id__in = set (foo_queryset.values ('bar_id')))' évidemment si vous avez beaucoup d'objets 'Foo' cela peut aussi être lent –