В django получение следующих имен пользователей в профиле пользователя - PullRequest
0 голосов
/ 14 февраля 2020

Я строю следующую модель. Я создал следующую модель, как показано ниже, и она отлично работает в админке. Я не создавал представление для следующего, потому что я на начальной стадии сборки, я тестирую шаблоны, чтобы вывести эти имена пользователей в список пользователей, но он не работает.

my models.py для следующего:

class UserProfile(models.Model):
user      = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='owner', on_delete=models.CASCADE)
following = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='followed_by')


def __str__(self):
    return str(self.following.all().count())

class post(models.Model):
parent = models.ForeignKey("self", on_delete=models.CASCADE, blank=True, null=True)
title = models.CharField(max_length=100)
image = models.ImageField(upload_to='post_pics', null=True, blank=True)
video = models.FileField(upload_to='post_videos', null=True, blank=True)
content = models.TextField()
likes = models.ManyToManyField(User, related_name='likes', blank=True)
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)

objects = postManager()
def __str__(self):
    return self.title

my views.py для userpostlist:

class UserPostListView(ListView):
model = post
template_name = 'blog/user_post.html'  #<app>/<model>_<viewtype>.html
context_object_name = 'posts'


def get_queryset(self):
    user = get_object_or_404(User, username=self.kwargs.get('username'))
    return post.objects.filter(author=user).order_by('-date_posted')

и мой userpostlist. html:

{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
  <h1 class="mb-3">posts by {{view.kwargs.username}}</h1>
  {% for user in username.owner.following.all %}
  {{ user.username }}
  {% endfor %}

    {% for post in posts %}
    <article class="content-section">
        <div class="article-metadata">
            <div class="img">
               <img class="rounded-circle article-img" data-toggle="modal" data-target="#mymodal" src="{{ post.author.profile.image.url }}">
            </div>

            <div class="profile-info">
              <a class="h2" href="{% url 'user-posts' post.author.username %}">{{ post.author }}</a>
              <div class="text-muted">{{ post.date_posted }}</div>
            </div>
       </div>
{% endfor %}
{% endblock content %}

Есть ли проблемы с представлением userpostlist в views.py? мне нужно добавить туда код?

1 Ответ

0 голосов
/ 14 февраля 2020

У вас есть несколько вариантов здесь, где нужно передать пользователей в контекст:

class UserPostListView(ListView):
    ...

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['author'] = get_object_or_404(User, username=self.kwargs.get('username')
        return context

И затем вместо этого:

{% for user in username.owner.following.all %}
   {{ user.username }}
{% endfor %}

Используйте это:

{{ author.username }}
...