模型.py
class PostComments(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.TextField(max_length=300, blank=False)
created_on = models.DateTimeField(auto_now_add=True)
表格.py
class CommentCreateForm(forms.ModelForm):
class Meta:
model = PostComments
fields = ('content',)
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(CommentCreateForm, self).__init__(*args, **kwargs)
def save(self, commit=True):
obj = super(CommentCreateForm, self).save(commit=False)
obj.user = self.user
if commit:
obj.save()
return obj
视图.py
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
comments = post.postcomments_set.order_by('-created_on')
if request.method == 'POST':
comment_form = CommentCreateForm(request.POST)
if comment_form.is_valid():
new_comm = comment_form.save(commit=False)
new_comm.user = request.user
new_comm.post = post
new_comm.save()
else:
comment_form = CommentCreateForm(request.POST)
context = {'post': post, 'comment_form': comment_form, 'comments': comments}
return render(request, 'blog/post_detail.html', context)
post_detail.html
{% extends 'blog/base.html' %}
{% block content %}
<div class="container">
<h1>{{post.title}}</h1>
<p>{{post.content}}</p>
<p>Categories: {{post.category}}</p>
<p>Author: {{post.user.company.name}}</p>
<p>Pub date: {{post.created_on}}</p>
{% for img in post.postimages_set.all %}
<img class="" src="{{ img.image.url }}">
{% endfor %}
<form class="form" method="POST" enctype='multipart/form-data'>
{% csrf_token %}
{{ comment_form.content }}
<button type="submit" class="btn btn-primary">Create comment</button>
</form>
{% for comm in comments %}
{% if comm.user == request.user %}
<p>{{comm.content}}</p>
<p>{{comm.user}}</p>
<p>{{comm.created_on}}</p>
{% else %}
<p>{{comm.content}}</p>
<p>{{comm.user}}</p>
<p>{{comm.created_on}}</p>
{% endif %}
{% endfor %}
</div>
{% endblock content %}
如果仍然相关。我是这样做的。
网址.py
路径('comment/int:id/',views.to_get_comment)
视图.py
删除模板中的链接: