Quiero compartir un proyecto que actualmente puede crear usuarios y cada usuario puede crear N publicaciones
La fuente está disponible en github
y tengo dos modelos usuarios y post

y las capas de la plantilla
Actualmente, el feed de cada publicación tiene un botón que envía un comentario de la publicación. Quiero cambiar eso para poner los comentarios de la publicación y no enviar y enviar un correo electrónico. Cada usuario debería poder comentar una publicación y el comentario debería permanecer.
{% block container %} <body id="bg" img style="zoom: 85%; background-position: center center; background-attachment: fixed;background-repeat:no-repeat;padding:5px; background-image: url('{% static "/back.png"%}') ";> <div style="background-image: url({% static 'static/img/back.png' %});"> <div class="row" style="align:center"> {% for post in posts %} <div class="col-sm-12 col-md-8 offset-md-4 mt-5 p-0 post-container,width:50%;"> <div class="card" style="width: 32rem;width:50%;"> <div class="card-body"> <div class="media pt-3 pl-3 pb-1"> <a href="{% url " users:detail" post.user.username%}"> <img alt="{{ post.user.username }}" class="mr-3 rounded-circle" height="35" src="{{ post.profile.picture.url }}"> </a> <h3 class="card-title">{{ post.title }}</h3> </div> <p class="card-text">{{ post.desc }}</p> </div> </div> <img alt="{{ post.title }}" src="{{ post.photo.url }}" style="width: 50%; heigth:60%"> <div class="media-body"> <b><p style="margin-top: 5px;">@{{ post.user.username }} - <small>{{ post.created }}</small> <a href="" style="color: #000; font-size: 20px;"> <i class="far fa-heart"></i> </a> <br> </p></b> </div> <!-- COMENT SECTION THAT I WANT TO IMPLEMENT MY FEATURE--> <form action="{% url 'posts:comment_new' %}" enctype="multipart/form-data" method="POST"> {% csrf_token %} <input class="form-control {% if form.title.errors %}is-invalid{% endif %}" name="title" size="16" type="hidden" value="{{post.title}}" > <input class="form-control {% if form.title.errors %}is-invalid{% endif %}" name="first_name " size="16" type="hidden" value="{{user.first_name}}" > <input class="form-control {% if form.title.errors %}is-invalid{% endif %}" name="last_name " size="16" type="hidden" value="{{user.last_name}}" > <textarea class="form-control" cols="50" name="comment" rows="5" style="width:50%;" value="{{ comments.comment }}"></textarea> <button class="btn btn-outline-info btn-lg" style="width:35%; display:block;margin:auto;" type="submit"> Publish </button> </form> </div> <br> {% endfor %} </div> </div> {% endblock %}Como dije, quiero reemplazar esta llamada de función de formulario para crear una sección de comentarios en lugar de enviar un correo electrónico con el comentario.
< form action = "{% url 'posts:comment_new' %}"> def comment_new(request): if request.method == 'POST': message = request.POST['comment'] subject = request.POST['title'] user = request.POST['first_name'] last_name = request.POST['last_name'] # lastname = request.POST['lastname'] send_mail("[MAIL] " + subject, user + " " + last_name + " said " + message + " on http://url.com:8000", 'guillermo.varelli@gmail.com', ['guillermo.varelli@gmail.com'], fail_silently=False) posts = Post.objects.all().order_by('-created') return render(request, os.path.join(BASE_DIR, 'templates', 'posts', 'feed.html'), {'posts': posts})Creo que esto tal vez cree un comentario con el usuario y publique la identificación con el detalle del comentario.
def comment_new(request): if request.method == 'POST': message = request.POST['comment'] subject = request.POST['title'] user = request.POST['first_name'] last_name = request.POST['last_name'] #lastname = request.POST['lastname'] form = PostForm(request.POST, request.FILES) form.save()Una opción es crear un comentario.
class Comment(models.Model): """ #id= models.AutoField(max_length=1000, blank=True) # post = models.ForeignKey(Post, related_name='',on_delete=models.CASCADE,default=0) """ #comment = models.ForeignKey('posts.Post', related_name='posts_rel', to_field="comments", db_column="comments", # on_delete=models.CASCADE, null=True, default=1, blank=True) post = models.IntegerField(blank=True,null=True,unique=True) user = models.ForeignKey(User, on_delete=models.CASCADE,null=True) username = models.CharField(blank=True, null=True, unique=True ,max_length=200) comment = models.CharField(max_length=254, blank=True, null=True)y luego la forma
class CommentForm(forms.ModelForm): class Meta: """form settings""" model = Comment fields = ('user','username','post','comment',)finalmente con la función puedo persistir pero no puedo renderizar
form = CommentForm(request.POST, request.FILES)# imprimir formset.errores
if form.is_valid(): form.save()pero no puedo encontrar la manera de representar el objeto en el archivo html
please feel free to suggest any solution or better create a pull request on the public git hub repo