Access data associated to a primary key

24 views
Skip to first unread message

tango ward

unread,
Oct 2, 2017, 5:23:04 AM10/2/17
to django...@googlegroups.com
Hi guys, I just want to know how to access and load the data associated to a primary key in a template.

models.py

class Team_Region(models.Model):
    name = models.CharField(max_length=50)

    # String representation
    def __str__(self):
        return self.name



class Team_Name(models.Model):
    t_name = models.CharField(max_length=100)
    logo = models.ImageField(upload_to='team_logos', blank=True)
    region_member = models.ForeignKey(Team_Region, related_name='regions')


    def __str__(self):
        return self.t_name + ' - ' + str(self.region_member)




views.py

class TeamRegionListView(ListView):
    context_object_name = 'regions_listview'
    model = Team_Region
    template_name = 'dota_teams/team_regions_list.html'


team_regions_list.html

{% block body_block %}
   
    <div class="row">
        {% for region in regions_listview %}
            <div class="col-sm-6 col-lg-4">
                <a href="{{ region.id }}" class="thumbnail">{{ region.name }}</a>
            </div>
        {% endfor %}
    </div>

{% endblock %}


What I want to achieve is to load the teams' logos and names when the region name link is clicked in the team_regions.html. The teams that will only be displayed in the template are the teams part of the specific ID from Team_Region. Say, region is NA, I want all teams under NA to be displayed in the template.

Not sure how to do this using ListView.

Any suggestions?


TIA

Gourav Chawla

unread,
Oct 2, 2017, 9:31:02 AM10/2/17
to Django users
You can create another url, view, template to do that.

Just create a url like : team/id

For the above url create a view, say, teams_under_region which accepts the 'id'. Based on that id you can then query your database for teams where region_member=id. This is just the approach you would follow for functional view. But for CBV you have DetailView that takes care of this. Hope this helps.

tango ward

unread,
Oct 2, 2017, 3:26:13 PM10/2/17
to django...@googlegroups.com
Hi Gourav, thanks for the input.

Just a question, Can I iterate through the Team_Region to get the teams listed under the specific id? or shall I do it in Team_Member class? This is for the DetailView.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/1b7d75bb-e5ed-4cc5-8b30-7d6487dcb966%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

tango ward

unread,
Oct 2, 2017, 3:36:27 PM10/2/17
to django...@googlegroups.com
Holy .. it works!

I have to access the Team_Name class using the 'related_name=regions' and from that, I was able to access the logo attributes of Team_Name.

Here's what I did.


{% block body_block %}
   
    <div class="row">
        {% for region in regions_detail.regions.all %}
        <div class="col-sm-12 col-lg-4">
            <a href="" class="thumbnail">
                <img src="{{ region.logo.url }}" alt="Image not found">

            </a>
        </div>
        {% endfor %}
    </div>

{% endblock %}


Thanks for your help Gourav. By the way, do you know when should I use CBV and function view?

On Mon, Oct 2, 2017 at 9:31 PM, Gourav Chawla <gauravchawl...@gmail.com> wrote:

--

Gourav Chawla

unread,
Oct 3, 2017, 9:16:42 AM10/3/17
to Django users
Glad, you worked it out. You can use them whenever you want. Function based views require you to write more code but give you more clarity on what's happening. On the other hand CBV help you keep the codebase cleaner.

At the end of the day, it's you who has to decide what to use.

tango ward

unread,
Oct 3, 2017, 12:10:40 PM10/3/17
to django...@googlegroups.com
thanks Gourav. I really appreciate your inputs.

On Tue, Oct 3, 2017 at 9:16 PM, Gourav Chawla <gauravchawl...@gmail.com> wrote:
Glad, you worked it out. You can use them whenever you want. Function based views require you to write more code but give you more clarity on what's happening. On the other hand CBV help you keep the codebase cleaner.

At the end of the day, it's you who has to decide what to use.
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
Reply all
Reply to author
Forward
0 new messages