If you look at my code, I put "related_name='threads'"
If you don't specify that, then it is automatically set to
"thread_set" (see here: 
http://django.tomsk.ru/documentation/models/reverse_lookup/)

Also, in your view, do this instead:
return render_to_response('people/threads.html', { "friends" :
friends}, context_instance=RequestContext(request))

Your template should then be:
{% for friend in friends %}
    <h2>{{ friend }}</h2>
    <p>{{ friend.thread_set|join:", " }}</p>
{% endfor %}

All that is if you want to display all the threads for each friend.

On Feb 23, 9:55 am, Darthmahon <[EMAIL PROTECTED]> wrote:
> Ok, just tried this:
>
> View:
> -----
> # get threads for friends
> threads = []
> for friend in friends:
>     threads.append([friend, friend.thread_set.all()])
> -----
>
> This appears to print something back, but it looks like it is just
> printing my friends.
>
> Not sure how to loop through this result properly in the template. At
> the moment I am doing this - but the template is probably completely
> wrong in terms of printing my friends, within each thread:
>
> -----
> View:
> -----
> # get threads for friends
> threads = []
> for friend in friends:
>     threads.append([friend, friend.thread_set.all()])
>
> return render_to_response('people/threads.html', { "thread_list" :
> threads }, context_instance=RequestContext(request))
> -----
>
> -----
> Template:
> -----
> {% for thread in thread_list %}
>
> <h2>{{ thread.title }}</h2>
> <p>{{ thread.friends|join:", " }}</p>
>
> {% endfor %}
> -----
>
> On Feb 22, 10:44 pm, Darthmahon <[EMAIL PROTECTED]> wrote:
>
>
>
> > Hi Julien,
>
> > Just gave that a go, getting an error:
>
> > 'User' object has no attribute 'threads'
>
> > I'm guessing that because I am referring to the User model, which has
> > no direct relation to the Thread module, this won't work?
>
> > Julien wrote:
> > > Hi, how about this? (I haven't tested it myself)
>
> > > Models:
> > > -------
>
> > > class UserProfile(models.Model):
> > >     user = models.ForeignKey(User, unique=True)
> > >     friends = models.ManyToManyField(User, blank=True,
> > > related_name='friends')
>
> > > class Thread(models.Model):
> > >     title = models.CharField(maxlength=200)
> > >     users   = models.ManyToManyField(User, related_name='threads')
>
> > > View:
> > > -----
>
> > > # get profile
> > > profile = get_object_or_404(UserProfile,
> > > user__id__exact=request.user.id)
>
> > > # get friends for user
> > > friends = profile.friends.all()
>
> > > # get threads for friends
> > > threads = []
> > > for friend in friends:
> > >     thread.append([friend, friend.threads.all()])
>
> > > On Feb 23, 8:34 am, Darthmahon <[EMAIL PROTECTED]> wrote:
> > > > Hey,
>
> > > > I have three models but I can only handle the relationship between two
> > > > at any one time.
>
> > > > Basically I have a page that needs to show a threads the current
> > > > user's friends are currently participating in. I.E. something like
> > > > this:
>
> > > > Thread: ABC
> > > > Participating: Friend 1
>
> > > > Thread: XYZ
> > > > Participating: Friend 1, Friend 2, Friend 3
>
> > > > Here are my models (both of which refer to the default Auth model):
>
> > > > ----------------------------------
> > > > File: /people/models.py
> > > > ----------------------------------
>
> > > > class UserProfile(models.Model):
>
> > > >         user            = models.ForeignKey(User, unique=True)
> > > >         friends = models.ManyToManyField(User, blank=True,
> > > > related_name='friend_set')
>
> > > > ----------------------------------
> > > > File: /thread/models.py
> > > > ----------------------------------
>
> > > > class Thread(models.Model):
>
> > > >         title           = models.CharField(maxlength=200)
> > > >         users   = models.ManyToManyField(User, related_name='users')
>
> > > > ----------------------------------
>
> > > > Now here is my view file:
>
> > > > ----------------------------------
> > > > File: /people/views.py
> > > > ----------------------------------
>
> > > > def index(request):
>
> > > >         # get profile
> > > >         profile = get_object_or_404(UserProfile,
> > > > user__id__exact=request.user.id)
>
> > > >         # get friends for user
> > > >         friends = profile.friends.all()
>
> > > >         # get threads for friends
> > > >         ???????????
>
> > > > ----------------------------------
>
> > > > As you can see, I don't know what to do now I need to get the threads
> > > > for each individual user. I don't need to group them in a special way,
> > > > I just want to print the threads my friends are currently
> > > > participating in an alphabetical list.
>
> > > > I did wonder if I should just edit the UserProfile model like this?
>
> > > > ----------------------------------
> > > > File: /people/models.py
> > > > ----------------------------------
>
> > > > class UserProfile(models.Model):
>
> > > >         user            = models.ForeignKey(User, unique=True)
> > > >         friends = models.ManyToManyField(User, blank=True,
> > > > related_name='friend_set')
> > > >         threads = models.ManyToManyField(Thread, blank=True,
> > > > related_name='thread_set')
>
> > > > ----------------------------------
>
> > > > Any ideas on how to do this? I'm guessing it's probably fairly basic
> > > > but I can't think how I would get around this at the moment (it's been
> > > > a long week!) ;)
>
> > > > Cheers,
> > > > Chris
>
> On Feb 22, 10:44 pm, Darthmahon <[EMAIL PROTECTED]> wrote:
>
> > Hi Julien,
>
> > Just gave that a go, getting an error:
>
> > 'User' object has no attribute 'threads'
>
> > I'm guessing that because I am referring to the User model, which has
> > no direct relation to the Thread module, this won't work?
>
> > Julien wrote:
> > > Hi, how about this? (I haven't tested it myself)
>
> > > Models:
> > > -------
>
> > > class UserProfile(models.Model):
> > >     user = models.ForeignKey(User, unique=True)
> > >     friends = models.ManyToManyField(User, blank=True,
> > > related_name='friends')
>
> > > class Thread(models.Model):
> > >     title = models.CharField(maxlength=200)
> > >     users   = models.ManyToManyField(User, related_name='threads')
>
> > > View:
> > > -----
>
> > > # get profile
> > > profile = get_object_or_404(UserProfile,
> > > user__id__exact=request.user.id)
>
> > > # get friends for user
> > > friends = profile.friends.all()
>
> > > # get threads for friends
> > > threads = []
> > > for friend in friends:
> > >     thread.append([friend, friend.threads.all()])
>
> > > On Feb 23, 8:34 am, Darthmahon <[EMAIL PROTECTED]> wrote:
> > > > Hey,
>
> > > > I have three models but I can only handle the relationship between two
> > > > at any one time.
>
> > > > Basically I have a page that needs to show a threads the current
> > > > user's friends are currently participating in. I.E. something like
> > > > this:
>
> > > > Thread: ABC
> > > > Participating: Friend 1
>
> > > > Thread: XYZ
> > > > Participating: Friend 1, Friend 2, Friend 3
>
> > > > Here are my models (both of which refer to the default Auth model):
>
> > > > ----------------------------------
> > > > File: /people/models.py
> > > > ----------------------------------
>
> > > > class UserProfile(models.Model):
>
> > > >         user            = models.ForeignKey(User, unique=True)
> > > >         friends = models.ManyToManyField(User, blank=True,
> > > > related_name='friend_set')
>
> > > > ----------------------------------
> > > > File: /thread/models.py
> > > > ----------------------------------
>
> > > > class Thread(models.Model):
>
> > > >         title           = models.CharField(maxlength=200)
> > > >         users   = models.ManyToManyField(User, related_name='users')
>
> > > > ----------------------------------
>
> > > > Now here is my view file:
>
> > > > ----------------------------------
> > > > File: /people/views.py
> > > > ----------------------------------
>
> > > > def index(request):
>
> > > >         # get profile
> > > >         profile = get_object_or_404(UserProfile,
> > > > user__id__exact=request.user.id)
>
> > > >         # get friends for user
> > > >         friends = profile.friends.all()
>
> > > >         # get threads for friends
> > > >         ???????????
>
> > > > ----------------------------------
>
> > > > As you can see, I don't know what to do now I need to get the threads
> > > > for each individual user. I don't need to group them in a special way,
> > > > I just want to print the threads my friends are currently
> > > > participating in an alphabetical list.
>
> > > > I did wonder if I should just edit the UserProfile model like this?
>
> > > > ----------------------------------
> > > > File: /people/models.py
> > > > ----------------------------------
>
> > > > class UserProfile(models.Model):
>
> > > >         user            = models.ForeignKey(User, unique=True)
> > > >         friends = models.ManyToManyField(User, blank=True,
> > > > related_name='friend_set')
> > > >         threads = models.ManyToManyField(Thread, blank=True,
> > > > related_name='thread_set')
>
> > > > ----------------------------------
>
> > > > Any ideas on how to do this? I'm guessing it's probably fairly basic
> > > > but I can't think how I would get around this at the moment (it's been
> > > > a long week!) ;)
>
> > > > Cheers,
> > > > Chris
--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to