On 01:42 Mon 27 Jan     , Marcin Szamotulski wrote:
> Hello,
> 
> I have a model 
> 
> class Post(models.Model):
> 
>     ...
>     authors = models.ManyToManyField('accounts.User', through='PostAuthor', 
> related_name='authors_posts')
> 
> 
> class PostAuthor(models.Model):
> 
>     user = models.ForeignKey('accounts.User')
>     post = models.ForeignKey(Post)
>     ...
> 
> 
> How can I use the Django 1.7 Prefetch object to load PostAuthors,  this
> does not work:
> 
> Post.objects.prefetch_related(
>     Prefetch(
>       'authors',
>       queryset=PostAuthors.object.select_related('user')
>     )
> 
> I got an exception:
> django.core.exceptions.FieldError: Cannot resolve keyword 'authors_posts' 
> into field. Choices are: created, id, post, post_id,
> user, user_id
> 
> Thanks for help,
> Marcin Szamotulski


If somebody will search here is the solution I've found:

Post.objects.prefetch_related(
    Prefetch(
        'authors',
        queryset=User.objects.order_by('postauthor__created'),
    )

It works because when prefetching User table is joined (inner joined)
with PostAuthor table and then the order_by('postauthor__created') will
make sense since PostAuthor has a columnt 'created'.

It would be nice to have an example in the docs for that though.

Best regards,
Marcin

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" 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-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/20140130024431.GK31583%40flying-circus.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to