Как получить изображение из класса Account и использовать его в PostListView? - PullRequest
0 голосов
/ 27 февраля 2019

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

Как мне отфильтровать его так, чтобы Profile.objects.get (user = [владелец пользователя сообщения])?

class PostListView(ListView):
    model = Post

    def get_context_data(self, **kwargs):
        context = super(PostListView, self).get_context_data(**kwargs)
        context['user_post'] = Post.objects.filter(user_id=self.request.user.id)
        # context['user_profile'] = Profile.objects.get(user=self.request.user.id)
        context['user_profile'] = Profile.objects.get(user=1)

        return context

Код ошибки говорит: 'PostListView' object has no attribute 'user'.Я не понимаю этот код ошибки, потому что, насколько я понимаю, модель PostListView установлена ​​на Post, которая имеет следующие модели:

class Post(models.Model):
    user = models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    ...

Другими словами, каждое сообщение, сделанное в блоге, имеетПользователь.

    def get_context_data(self, **kwargs):
    context = super(PostListView, self).get_context_data(**kwargs)
    context['user_post'] = Post.objects.filter(user_id=self.request.user.id)
    # context['user_profile'] = Profile.objects.get(user=self.request.user.id)
    context['user_profile'] = Profile.objects.get(user=1)

    return context

Что, на мой взгляд, self делает здесь, представляет текущий объект в PostListView, верно?

Можете ли вы пожалуйста ELI5?У меня возникли некоторые проблемы с пониманием документации, так как язык, используемый там, сложен для меня.

1 Ответ

0 голосов
/ 28 февраля 2019

Попробуйте что-то вроде этого,

class PostListView(ListView):
   template_name = 'add_template_name.html'
   model = Post
   context_object_name = 'all_posts'

   def get_queryset(self):
       return Post.objects.all()

Теперь в свой шаблон добавьте это,

{% for post in all_posts %}

   <img src="{{ post.user.profile_picture }}" alt="image">

   <p> {{ post.title }} </p>

{% endfor %}

Когда вы хотите использовать элемент внешнего ключа, в данном случае пользователь, вы можете выбратьpost.user. Предполагая, что ваша пользовательская модель имеет profile_picture и username, вы можете отобразить их как post.user.profile_picture и post.user.username соответственно.Для получения дополнительной информации вы можете просмотреть документы Django.

...