Class Based Views : filter items by users

64 views
Skip to first unread message

Nabil BOUDERBALA

unread,
Jul 4, 2017, 12:36:51 PM7/4/17
to Django users

As you can see from my template below, i have a list of users who posted items and I would like to get the list of items for each user. However, using the view below I only get the list for the current logged user. How can I modify my views.py so that it filters items for each one of the listed users?

my template.html

    <div>
        {% if user %}
            <u class='tags' style = "list-style: none; margin: 0; padding: 0px 0px 10px 10px; line-height: 170%; display: block;">
                {% for user in user_list %}
                    {% if user.item_set.count > 0 %}
                        <a href="{% url 'item-user' %}" title="{{ user.get_username }}">
                            {{ user.username }} [{{ user.item_set.count }}]<br/>
                        </a>
                    {% endif %}
                {% endfor %}
            </u>
        {% endif %}
</div>

In addition the DCF proxy user class in the models.py is below :

class DcfUser(User):
class Meta:
    proxy = True
def allow_add_item(self):
    if self.item_set.count() > settings.DCF_ITEM_PER_USER_LIMIT:
        return False
    else:
        return True

class based views.py

class UserItemsView(ListView):
template_name = 'dcf/template.html'
def get_queryset(self):
   return Item.objects.filter()

Thank you

Melvyn Sopacua

unread,
Jul 6, 2017, 5:56:06 AM7/6/17
to django...@googlegroups.com

Please show all relevant bits of the code (user_list is not part handed off to the template).

 

But you could start but not naming 2 different variables inside eachother's scope identical.

 

On Tuesday 04 July 2017 09:36:51 Nabil BOUDERBALA wrote:

 

> {% if user %}

> {% for user in user_list %}

 

--

Melvyn Sopacua

Nabil BOUDERBALA

unread,
Jul 7, 2017, 4:25:36 AM7/7/17
to Django users
Thank you, I have updated the template accordingly.
Regardin the views, I solved the issue through the function below :
def itemuserfunc(request, user):
    template = get_template('dcf/user_item_list_noedit.html')
    profile_owner = DcfUser.objects.filter(username=user)  # Assuming you have entry in your database
    item_list = Item.objects.filter(user = profile_owner)
    return template.render(Context({'item_list': item_list}))
Reply all
Reply to author
Forward
0 new messages