Hmmm ok, can't get this to print anything. When trying to print the
threads array it does this:

[, []]
[, []]

So, it is looping through my friends properly, but it not getting
their threads. To be honest, ideally I just want to print a list of
all the threads my friends are in, and not a list of all my friends
plus their threads. I.E:

Thread: ABC
Friend 1

Thread: XYZ
Friend 1, Friend 2, Friend 3

And not:

Friend 1
Threads: ABC, XYZ

Friend 2
Threads: XYZ

Here is the latest code:

Model:
-----

class Thread(models.Model):

        title           = models.CharField(maxlength=200)
        users   = models.ManyToManyField(User, related_name='threads')

        def __str__(self):
                return self.title

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
        threads = []
        for friend in friends:
                threads.append([friend, friend.threads.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, 11:09 pm, Julien <[EMAIL PROTECTED]> wrote:
> 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