(DJANGO)如何在作者评论区中设置current.username

Comment我的Django应用程式中模型。

我想将评论作者设为当前注册author,而不是其他注册帐户。

这是屏幕截图,我可以选择user2发布评论的帐户,但当前我已经user1登录。在此处输入图片说明

这是我的DjangoComment模型:

class Comment(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
    name = models.ForeignKey(User, on_delete=models.CASCADE)
    email = models.EmailField()
    body = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=False)

    class Meta:
        ordering = ['created_on']

    def __str__(self):
        return 'Comment {} by {}'.format(self.body, self.name)

以及来自html表单的一些代码:

  <article class="media content-section">
    <div class="media-body">
      <!-- comments -->
      {% if comments.count == 1 %}
        <h2>{{ comments.count }} comment</h2>
      {% else %}
        <h2>{{ comments.count }} comments</h2>
      {% endif %}

      {% for comment in comments %}
      <div class="comments" style="padding: 10px;">
        <p class="font-weight-bold">
          {{ comment.name }}
          <span class=" text-muted font-weight-normal">
            {{ comment.created_on }}
          </span>
        </p>
        {{ comment.body | linebreaks }}
      </div>
      {% endfor %}
      {% if new_comment %}
      <div class="alert alert-success" role="alert">
        Your comment is awaiting moderation
      </div>
      {% else %}
      <h3>Leave a comment</h3>
      {% load crispy_forms_tags %}
      <form method="post" style="margin-top: 1.3em;">
        {{ comment_form | crispy }}
        {% csrf_token %}
        <button type="submit" class="btn btn-primary  btn-lg">Submit</button>
      </form>
      {% endif %}
    </div>
  </article>

编辑

view.py

def post_detail(request, slug):
    template_name = 'blog/post_detail.html'
    post = get_object_or_404(Post, slug=slug)
    comments = post.comments.filter(active=True)
    new_comment = None
    # Comment posted
    if request.method == 'POST':
        comment_form = CommentForm(data=request.POST)
        if comment_form.is_valid():
            # Create Comment object but don't save to database yet
            new_comment = comment_form.save(commit=False)
            # Assign the current post to the comment
            new_comment.post = post
            # Save the comment to the database
            new_comment.save()
    else:
        comment_form = CommentForm()

    return render(request, template_name, {'posts': post,
                                           'comments': comments,
                                           'new_comment': new_comment,
                                           'comment_form': comment_form})
威廉·范昂塞姆

您可以使场不可编辑,通过设置editable=…参数[Django的DOC]False我还建议使用user不是 name,因为它是对用户对象的引用,而不是用户名:

class Comment(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
    user = models.ForeignKey(User, editable=False, on_delete=models.CASCADE)
    email = models.EmailField()
    body = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=False)

    class Meta:
        ordering = ['created_on']

    def __str__(self):
        return 'Comment {} by {}'.format(self.body, self.user)

然后在您看来,当表单有效时,您可以instance.user将该表单的设置为request.user

from django.contrib.auth.decorators import login_required

@login_required
def add_comment(request, post_id):
    # …
    if request.method == 'POST':
        form = CommentForm(request.POST, request.FILES)
        if form.is_valid():
            form.instance.user = request.user
            # …
        # …
    # …

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

设置变量$ USERNAME无效

未设置SESSION ['username']

如何在 VBScript 中获取 %username%?

如何重定向到instagram:// user?username = {username}

loadUserByUsername(String username)中的username参数为空-Spring Boot

psql shell中的username-#和username =#之间的区别?

username = request.data.get('username', '0') 中的什么参数

FTP中的%username%是什么

SSH隧道中的username @ host

如何在codeigniter中使url / username?

如何:sudo -u <username> 在 sudoer 中?

如何在终端而不是username @ hostname中显示时间?

如何在Ubuntu中更改username @之后的文本

如何在 Ansible 中运行 sudo -u username 命令?

如何在 GraphQL 中通过 userName 获取用户?

使用telethon设置@username,名字和姓氏

如何获取对API进行调用的用户的UserName?

如何使 url 像 username.example.com

socket.to(username).emit('eventName',{})如何工作?

在PassportJS会话中修改user.username

注册表中%username%的用法?

在派生的AuditDataProvider中获取AuditAction的Username属性

CentOS 7中的环境USER和USERNAME

雷鸟在/ var / mail / username中的本地邮件

SCCM Powershell脚本中的$ ENV:USERNAME

如何使用 PHP PDO 从数据库中检查 $username 到 UserName

设置 php 变量 $userName = swift Encodable $_POST['userName'] 变量的正确语法或方法是什么?

Django-如何实现example.com/username url系统

如何在/ media / username / mountpoint挂载EncFS卷?