отображение сообщений пользователя внутри профиля в django - PullRequest
0 голосов
/ 25 апреля 2020

Я довольно новичок в django, у меня есть две модели в моем приложении MyProfile и MyPost, у пользователей есть профиль, и они могут создавать сообщения, это все работает, но я хочу показать сообщения, созданные пользователем perticular, внутри их собственных профиль я попытался добавить объект user_posts в MyProfile с автором фильтра, но ничего не произошло.

MyView

@method_decorator(login_required, name="dispatch")    
class MyProfileDetailView(DetailView):
    model = MyProfile
    def broto(request):
        user = request.user
        user_posts = MyPost.objects.filter(author=request.user).order_by('-cr_date')
        return render(request, {'user_posts':user_posts,'user': user})

Страница профиля html

{% extends 'base.html' %}
{% block content %}
<div class="p-5">
<img src="/media/{{myprofile.pic}}" />
<h1 class="myhead2">{{myprofile.name}}</h1>
<p><strong>Address: {{myprofile.address}}</strong></p>
<p><strong>Phone Number: {{myprofile.phone_no}}</strong></p>
<p><strong>Email: {{myprofile.user.email}}</strong></p>
<p><strong>About:</strong> {{myprofile.purpose}}</p>
<p><strong> Total Donation Recived: {{myprofile.donation_recived}}</strong></p>
<hr>

<table class="table my-3">
    <thead class="thead-dark">
        <tr>
            <th>Title</th>
            <th>Date</th>
            <th>Action</th>
        </tr>
    </thead>
{% for MyPost in user_posts %}
        <tr>
            <td>{{MyPost.title}}</td>
            <td>{{MyPost.cr_date | date:"d/m/y"}}</td>
            <td>
            <a class="btn btn-dark btn-sm" href='/covid/mypost/{{n1.id}}'>Read More</a>
            </td>
        </tr>
{% endfor %}
</table>
</div>
{% endblock %}

1 Ответ

1 голос
/ 25 апреля 2020

Как уже упоминалось в комментариях, ваши broto методы, вероятно, никогда не выполняются, поэтому ничего не происходит.

Если вы используете DetailView, лучший способ расширить контекст - переопределить get_context_data метод. В вашем случае это может быть:

@method_decorator(login_required, name="dispatch")    
class MyProfileDetailView(DetailView):
    model = MyProfile
    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super().get_context_data(**kwargs)
        # Add in a QuerySet of all the user posts
        user_posts = MyPost.objects.filter(author=self.request.user).order_by('-cr_date')
        context['user_posts'] = user_posts
        context['user'] = self.request.user
        return context

Вы можете прочитать об этом здесь: https://docs.djangoproject.com/en/3.0/topics/class-based-views/generic-display/#adding -extra-context

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...