Как я могу добавить изображение в шаблон DetailView? - PullRequest
0 голосов
/ 17 апреля 2020

Я создал веб-сайт и использовал свою модель Post в DetailView CBV. У меня есть другая модель под названием «UserProfileInfo», в которой у меня есть поле изображения. Я хочу отобразить автора сообщения pi c рядом с его именем в шаблоне post_detail. Как я могу это сделать? Я знаю, что не могу указать 2 модели в качестве моделей в функции DetailView. Я подумал о том, чтобы как-то добавить ее в представление get_context_data. Не знаю.

Соответствующий код:

Модели :

class UserProfileInfo(models.Model):
    user = models.OneToOneField(User, models.PROTECT)
# mode ls.PROTECT is an on_delete value which protect the source model and if he is not existed or having a problem he raises an Error to alert us

    # additional
    portfolio_site = models.URLField(blank=True)
    profile_pic = models.ImageField(upload_to='TheApp/profile_pics',blank=True)

    def __str__(self):
        return self.user.username


class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.PROTECT)
    title = models.CharField(max_length=200)
    text = models.TextField()
    create_date = models.DateTimeField(default=timezone.now)
    post_views = models.IntegerField(default=0)



    def get_absolute_url(self):
        return reverse("TheApp:post_detail", kwargs={'pk':self.pk})


    def __str__(self):
            return self.title

Вид:

class PostDetailView(LoginRequiredMixin, DetailView):

    model = Post

    def get_context_data(self, **kwargs):
        context = super(DetailView, self).get_context_data(**kwargs)
        obj = self.get_object()
        obj.post_views = obj.post_views + 1
        obj.save()
        return context

Шаблон:

{% extends "TheApp/base.html" %}

{% block body_block %}


<div class="container" style="margin-top:50px; margin-bottom:20px;">
  <h1>{{post.title}}</h1>

<div style="margin-bottom:20px;">{{ post.create_date }}</div>


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

<p>Created By: {{ post.author }}</p>



{% if user.is_authenticated %}

  <a class='btn btn-primary btn-comment' href="{% url 'TheApp:add_comment_to_post' pk=post.pk %}">Add Comment</a>



  {% if user == post.author %}

    <a class='btn btn-primary' href="{% url 'TheApp:post_edit' pk=post.pk %}">EDIT</a>

    <a class='btn btn-primary' href="{% url 'TheApp:post_remove' pk=post.pk %}">DELETE</a>

  {% endif %}
{% endif %}
</div>

<div class="container" style="margin-bottom:150px;">
  {% for comment in post.comments.all %}
  <div class="Misgeret" style= "margin-bottom:20px;">

  <br>
  {{comment.create_date}}
  <p>{{comment.text|linebreaks}}</p> 
  <p>Posted by: {{comment.author}}</p>



  {% if user.is_authenticated %}
    {% if user.username == comment.author or user == post.author %}

    <a style="margin-bottom:20px;" class='btn btn-primary' href="{% url 'TheApp:comment_remove' pk=comment.pk %}">Remove</a>


  {% endif %}
  </div>
{% endif %}
  {% empty %}
  <p>No Comments</p>
  {% endfor %}


</div>

{% endblock %}
...