I'm trying to create an interface where students can match with other students in the class for a group project based on shared interests and I have a queryset in a django view and from there I am able to use select_related to get the parent object and even print the fields in Anaconda Prompt (when running on local server) but I can't seem to get the field to show up in a template...what am I missing?
Here is the relevant part of my models file:
class Profile(models.Model):
    first_nm = models.CharField(max_length=100)
    last_nm = models.CharField(max_length=100)
class Potential(models.Model):
    user1 = models.ForeignKey(Profile, related_name='user1', on_delete=models.CASCADE)
    user2 = models.ForeignKey(Profile, related_name='user2', on_delete=models.CASCADE)
Here is the relevant part of my view:
def matches(request):
    my_user = request.user
    my_id = Profile.objects.get(slug=my_user)
    the_matches = Potential.objects.filter(Q(user1=my_id) | Q(user2=my_id)).all().select_related('user1','user2')
    print(the_matches.values())
    print(the_matches.values('user2__first_nm'))
    return render(request,'projects/matches_list.html', { 'matches':the_matches})
Here is the relevant part of the template:
{% for match in matches %}
     <div class="matches">
       <p>{{ match.user1__first_nm }}</p>
       <p>{{ match.user2__first_nm }}</p>
     </div>
{% endfor %}
In the template above, why does this not work?
Thanks in advance!
I have tried using the syntax above like:
<p>{{ match.user2__first_nm }}</p>
and when just printing to the console I get
<QuerySet [{'user2__first_nm': 'test_nm'}]>
from the second to last line in the view above but when I run locally, the html shows up with p tag with no contents. What am I doing wrong?
Thanks!
                        
Do not use
__in template, but use.__is only used when constructing QuerySets. In your template, you're accessing theProfileobject, so to get an attribute from that object you use the syntaxobject.attribute.Your code becomes: