User != UserEmail

User does not have subject, thus it will raise AttributeError: 'User'
object has no attribute 'subject'

Secondly, I do not want to create 1+N queries (where N is number of
users), with creating a query per user this would be simple but very
inefficient.

On Jan 16, 12:16 pm, Praveen Krishna R <rpraveenkris...@gmail.com>
wrote:
> *First of all did you try accessing the email subject with a dotted
> notation?*
> try
> u = User.objects.all()
> and
> u[0].subject
>
> On Sun, Jan 16, 2011 at 12:53 PM, Jari Pennanen 
> <jari.penna...@gmail.com>wrote:
>
>
>
>
>
>
>
>
>
> > Hi!
>
> > Suppose following model:
>
> > class UserEmail(models.Model):
> >    """User email"""
>
> >    user = models.ForeignKey(User, db_index=True,
> >                             null=True, blank=True, editable=False)
> >    """User recieving the email"""
>
> >    added = models.DateTimeField(_("added"), auto_now_add=True)
> >    """Added to database"""
>
> >    subject = models.CharField(_('subject'), max_length=128)
> >    """Subject"""
>
> >    message = models.TextField(_('message'))
> >    """Message"""
>
> > How can I retrieve list of users and their latest email subject?
>
> > This almost works:
>
> > User.objects.all()\
> >  .annotate(latest_email_added=Max('useremail__added'))
>
> > But it does not give me the other fields of latest email such as
> > subject, so I try to add other fields using extra:
> > User.objects.all()\
> >  .annotate(latest_email_added=Max('useremail__added'))\
> >  .extra(select={'email_subject' : 'myapp_useremail.subject'})
>
> > Suddenly it adds a GROUP BY to the query with a long list of fields
> > that should not be there, which breaks everything, now I get multiple
> > rows per user which is not wanted.
>
> > If I try to modify the group_by manually, like this:
> > a = User.objects.all()\
> >  .annotate(latest_email_added=Max('useremail__added'))\
> >  .extra(select={'email_subject' : 'dmusic_useremail.subject'});
> > a.query.group_by = [('auth_user', 'id')];
> > print a.query
>
> > There is still one extra field in group by making it break:
> > ... GROUP BY "auth_user"."id", (dmusic_useremail.subject)
>
> > Can someone elaborate this behavior?
>
> > Any help is appreciated, thanks!
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Django users" group.
> > To post to this group, send email to django-users@googlegroups.com.
> > To unsubscribe from this group, send email to
> > django-users+unsubscr...@googlegroups.com<django-users%2Bunsubscribe@google 
> > groups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/django-users?hl=en.
>
> --
> *Praveen Krishna R*

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to