Как назначить комментарий к посту с комментариями - PullRequest
0 голосов
/ 27 марта 2020

Я Django новичок. Я пытаюсь реализовать код для реализации формы комментариев на домашней странице, а также отображать ее комментарии.

class Image(models.Model):
    imageuploader_profile=models.ForeignKey(settings.AUTH_USER_MODEL) 
    upload_image=models.ImageField() 

class Comments(models.Model):
    user=models.ForeignKey(settings.AUTH_USER_MODEL)
    commented_image=models.ForeignKey(Image,....)
    comment_post=models.TextField()

def home(request):
    if request.method == 'POST':
        form=CommentForm(request. POST)
        if form.is_valid():
            comment=form.save(commit=False)
            comment.user=request.user
            comment.commented_image=post
            comment.save()
            return redirect.... 
    else:
        form=CommentForm

ДОМАШНИЙ шаблон

{% for comment  in all_images %}
{{ comment.comment_post }}
{% endfor %}

enter image description here enter image description here

1 Ответ

1 голос
/ 27 марта 2020

Изменен контекст вашего второго изображения, посмотрите, решит ли это проблему.

context = {'all_images': all_images, 'comments': comments}

Отредактировано:

Редактировать home.html

{% for image in all_images %}
 <img src="{{ image.upload_image"}} />

 {% for comment in comments %}
   {% if comment.commented_image == image %}  
     {{ comment.comment_post }}
   {% else %}
     No comments available.
   {% endif %}
  {% endfor %}
{% endfor %}

Отредактировано (2 ): Для подсчета комментариев без активной выполните:

Редактировать views.py

# change
all_images = Image.objects.filter(imageuploader_profile=request.user)
...

for image in all_images:
    images_comment_count = []
    images_comment_count.append(Comments.objects.filter(commented_image_id=image.id, active=True).count())
...

context = {..., 'images_comment_count': images_comment_count}

Теперь отредактируйте home.html

{% load index %}
...
{% for image in all_images %}
 <img src="{{ image.upload_image"}} />

 {% for comment in comments %}
   {% if comment.commented_image == image %}  
     {{ comment.comment_post }}
   {% else %}
     No comments available.
   {% endif %}
  {% endfor %}

  <!-- Comment Count CHANGED THIS -->
  {{ images_comment_count|index:forloop.counter0 }}
{% endfor %}

Редактировать 3:

да, это видно, потому что теперь мы будем создавать собственный фильтр тегов. 1) создайте каталог templatetags / в той же папке приложений 2) создайте файл с именем __init__.py 3) создайте другой файл с именем index.py, мы заполним этот файл 4) добавьте указанный код в index.py

from django import template
register = template.Library()

@register.filter
def index(indexable, i):
    return indexable[i]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...