Связанное имя возврат post.commentpost.none

Может ли кто-нибудь объяснить мне, почему я получаю Post.CommentPost.None?

Как правильно связать CommentPost с Posty в запросе? Мне нужно получить {{posty.comments.user}} мой результат Post.CommentPost.None

Вот кое-что о моих моделях и функциях.

class Posty(models.Model):
   title = models.CharField(max_length=250, blank=False, null=False, unique=True)
   sub_title = models.SlugField(max_length=250, blank=False, null=False, unique=True)
   content = models.TextField(max_length=250, blank=False, null=False)
   image = models.ImageField(default="avatar.png",upload_to="images", validators=[FileExtensionValidator(['png','jpg','jpeg'])])
   author = models.ForeignKey(Profil, on_delete=models.CASCADE)
   updated = models.DateTimeField(auto_now=True)
   published = models.DateTimeField(auto_now_add=True)
   T_or_F = models.BooleanField(default=False)
   likes = models.ManyToManyField(Profil, related_name='liked')
   unlikes = models.ManyToManyField(Profil, related_name='unlikes')
   created_tags = models.ForeignKey('Tags', blank=True, null=True, related_name='tagi', on_delete=models.CASCADE)
  test_wyswietlenia = models.IntegerField(default=0, null=True, blank=True)

class CommentPost(models.Model):
   user = models.ForeignKey(Profil, on_delete=models.CASCADE)
   post = models.ForeignKey(Posty, on_delete=models.CASCADE, related_name="comments")
   content1 = models.TextField(max_length=250, blank=False, null=False)
   date_posted = models.DateTimeField(default=timezone.now)
   date_updated = models.DateTimeField(auto_now=True)

ПРОСМОТРОВ

     tag = request.GET.get('tag')
   if tag == None:
       my_tag = Posty.objects.prefetch_related('comments')
       my_view = Posty.objects.prefetch_related('my_wyswietlenia')

   else:
      my_tag = Posty.objects.filter(created_tags__tag=tag)
      my_view = Posty.objects.prefetch_related('my_wyswietlenia')

TEMPLATES

                {% for post in my_tag %}
                  {% if post.comments.last.user == None %}
                    <span class="forum_tag_author">Komentarz » <a href="{% url 'home:detail_post' post.pk %}">Brak komentarza</a></span><br/>
                    <span class="forum_tag_author">Stworzony przez » <a href="{% url 'profile:profil_uzytkownika' post.pk %}">{{post.author}} </a> </span><hr/>
                  {% else %}
                    <span class="forum_tag_author">Komentarz » <a href="{% url 'home:detail_post' post.pk %}">{{post.comments.last.content1}}</a></span><br/>
                    <span class="forum_tag_author">Odpowiadający » <a href="{% url 'profile:profil_uzytkownika' post.pk %}">Dodany przez: {{post.comments.last.user}} </a> </span><hr/>
                  {% endif %}
              {% endfor %}

А это {{post.comments}} дать запрос Post.CommentPost.None

В чем проблема? Что я делаю плохо?

Вы можете использовать Subquery выражение [Django-doc] для получения последнего content1 комментария и автора с:

from django.db.models import OuterRef, Subquery

last_comment = CommentPost.objects.filter(post=OuterRef('pk')).order_by('-date_posted')

my_tag = Posty.objects.annotate(
    last_comment=Subquery(last_comment.values('content1')[:1]),
    last_comment_user=Subquery(last_comment.values('user__name')[:1]),
    last_comment_user_pk=Subquery(last_comment.values('user')[:1])
).prefetch_related('my_wyswietlenia')

__name может быть разным, поскольку это зависит от полей вашей Profil модели.

Затем вы можете отобразить содержимое и последнего автора с помощью:

{% for post in my_tag %}
    {{ post.last_comment }} by {{ post.last_coment_user }}
{% enfor %}
Вернуться на верх