How to show articles from a user (django)?

Viewed 44

I have an 'Article' model is inside an app, 'Article' have User as a Foreign Key:

(/dashboard/models.py)

class Article(models.Model): 
     author = models.ForeignKey(User, on_delete=models.CASCADE)

Here is how I call create detailview for each user: (/blog/views.py)

def auth(request):
    def get_user():
        if hasattr(request, 'user'):
            return request.user
        else:
            from django.contrib.auth.models import AnonymousUser
            return AnonymousUser()

    return {
        'user': SimpleLazyObject(get_user),
        'messages': messages.get_messages(request),
        'perms':  lazy(lambda: PermWrapper(get_user()), PermWrapper)(),
    }

(/blog/urls.py):

urlpatterns = [
    path(r'^<pk>/?$',
         DetailView.as_view(
             model=User,
             template_name='blog_detail.html',
             context_object_name='user_object'
         ), name='blog_detail'),]

In template 'blog_detail.HTML', I call name, profile of each User just fine, but I cannot call articles written by that User. (/blog/templates/blog_detail.html)

{% if article_list in user_object.Article.set_all %}
    {% for article in article_list %}

Where did I go wrong, pls help me:(

1 Answers

Define UserBlogsDetailView in the views.py as below. Add context in the get_context_data() method.

views.py

from django.utils import timezone
from django.views.generic.detail import DetailView


class UserBlogsDetailView(DetailView):

    model = User
    template_name='blog_detail.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # Try to add context for the user in this method
        return context

urls.py

urlpatterns = [
    path('<slug:slug>/', UserBlogsDetailView.as_view(), name='blog-detail'),
]
Related