That would be awesome, somebody has a solution for this?
On Sunday, February 16, 2014 2:53:55 PM UTC-3, Robert Kajic wrote:
>
> I would love it if the Prefetch object allowed me to pass in custom
> querysets when prefetching related generic foreign fields. Specifically I
> want this in order to call select_related on each subgroup.
> For now I've subclassed the GenericForiengKey class, overriding
> get_prefetch_queryset, to allow me to use modelless querysets like this:
>
> .prefetch_related(
> Prefetch('obj', queryset=QuerySet().select_related(
> "user", "poem__user", "consumer", "producer"
> ))
>
> In get_prefetch_queryset, for each subgroup, I copy the select_related
> options from the modelless queryset to the subgroup queryset:
>
> qs = ct.get_all_objects_for_this_type(pk__in=fkeys)
> # Copy any select related options from queryset to qs
> qs = self.combine_select_related(qs, queryset)
> ret_val.extend(qs)
>
> Initially I thought I would simply be able to combine the two querysets
> using QuerySet.__or__, but I noticed that Query.combine refuses to run
> unless both queries are on the same model. Would there be any harm in
> allowing it to combine Queries even if the qeries are not on the same
> model, as long as one of the queries doesn't have a model at all? Then the
> above could be changed into:
>
> # Copy any select related options from queryset to qs
> qs |= queryset
>
> This would have the added benefit of copying other options other than
> select_related.
>
> I know this is problematic because you may not want to combine the same
> queryset with each individual group. Ideally, the developer would be able
> to specify a different queryset for each group kind.
>
> .prefetch_related(
> Prefetch('obj', queryset=QuerySet().select_related(
> "user", "poem__user", "consumer", "producer"
> ))
>
> Does anyone have any thoughts on this?
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/7a7a4157-51b2-4e89-8cb0-ce25b5445b36%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.