2015-08-05 6 views
0

Я новичок в 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'), 

ответ

0

Я не перед моего рабочего ноутбука, но это должно работать:

comment = get_object_or_404(YourCommentModel.id, id=comment_id) #assuming the pk for Comment is id 

Кроме того, убедитесь, что вы вызываете комментарий и назначить его к вашей модели, как

YourCommentModel = models.ForeignKey(Comment) 

Может быть, я ошибаюсь, но вы никогда не назначен django_comment к модели (или не включать в себя модель в задаче), которая является необходимость в противном случае таблица не будет добавлена ​​в вашу БД

+0

Это не работает. Комментарий представляет собой структуру django, которая автоматически привязывается к объекту. Мне просто нужно выяснить, как в нем работает modifcation. Нужна помощь, пожалуйста. Спасибо за ваше время. Я весьма признателен. – user3487775