Я новичок в Django. В настоящее время я пытаюсь реализовать раздел комментариев для каждого сообщения в своем приложении. У меня возникает ошибка при попытке удалить конкретный комментарий и получить ошибку int() аргумент должен быть строкой или числом, а не «SimpleLazyObject». Вот мой код.Django Comment Framework, Удалить не работает
comment.html:
<h3> Comments </h3>
{% get_comment_count for post as comment_count %}
<p>This post has {{ comment_count }} comments.</p>
{% get_comment_list for post as comment_list %}
{% for comment in comment_list %}
<div style="border: 1px solid green;">
<a name="c{{ comment.id }}"></a>
<a href="{% get_comment_permalink comment %}">
permalink for comment #{{ forloop.counter }}
</a>
<hr>
<h4> Just for testing purpose (Ignore) </h4>
<p> content_object : {{comment.content_object.id}}</p>
<p> content_type : {{comment.content_type}}</p>
<p> object_pk(Foreign Key) : {{comment.object_pk}} </p>
<p> user(Foreign Key) : {{comment.user}}</p>
<p> Comment ID : {{comment.id}}</p>
<hr>
<p>Posted by: {{ comment.user_name }} on {{ comment.submit_date }}</p>
<p> {{comment.comment}}</p>
<!-- NOT SURE HOW WILL IT WORK -->
<a href = '{% url 'delete_own_comment' comment.id %}'> Delete Comment </a>
</div>
{% endfor %}
Views.py
import django_comments
from django_comments.models import Comment
from django_comments.views.moderation import perform_delete
def delete_own_comment(request, comment_id):
comment = get_object_or_404(Comment, id=comment_id)
# if comment.user.id != request.user.id:
# raise Http404
perform_delete(request, comment)
Однако я заметил, что если я даю какие-либо неправильно comment_id в аргументе для get_object_or_404, это заставляет меня 404 страницы, но когда правильный comment_id передан, он дает мне ошибку
Request Method: GET
Request URL: http://localhost:8080/posts/comments/delete/2/
Django Version: 1.8.2
Exception Type: TypeError
Exception Value:
int() argument must be a string or a number, not 'SimpleLazyObject'
Exception Location: /usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py in get_prep_value, line 985
Python Executable: /usr/bin/python
Python Version: 2.7.6
2) Кроме того, в html, perma ссылка ссылки для комментариев не работает. Его дает мне ошибку 404 тоже:
post objects don't have a get_absolute_url() method
Однако, у меня есть get_absolute_url() в моем посте модели:
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.id})
url.py
# ex: /posts/3/
url(r'^(?P<post_id>[0-9]+)/$', views.detail, name='post-detail'),
Это не работает. Комментарий представляет собой структуру django, которая автоматически привязывается к объекту. Мне просто нужно выяснить, как в нем работает modifcation. Нужна помощь, пожалуйста. Спасибо за ваше время. Я весьма признателен. – user3487775