首页 > 解决方案 > 需要在作者评论部分设置 current.username

问题描述

我已经创建了Comment部分。主要目标是只有注册用户才能发表评论,并且只能通过他们的用户名发表评论。

目前,我对帖子发布者(用户名)有疑问。在屏幕截图上,您可以看到,我可以选择从用户:JOHUA发表评论,但我目前是从用户:JOHN登录的在此处输入图像描述

我需要为用户设置仅从他的用户名发表评论的权限(也许我应该删除models.pyforms.pyadmin.pyusername中的变量,并默认设置为 user: username,或者你知道如何删除其他用户名来自用户名列,因此注册用户只能选择他的用户名。

我一直在为这个问题困惑很长时间,所以绝对需要社区的帮助!

这是一些代码:

models.py

class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
    username = 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.username)

forms.py

from .models import Comment
from django import forms

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ['username', 'email', 'body']

admin.py

from django.contrib import admin
from .models import Post, Category, Comment

class CategoryAdmin(admin.ModelAdmin):
    pass


@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):
    list_display = ('username', 'body', 'post', 'created_on', 'active')
    list_filter = ('active', 'created_on')
    search_fields = ('username', 'email', 'body')
    actions = ['approve_comments']

    def approve_comments(self, request, queryset):
        queryset.update(active=True)

admin.site.register(Post)
admin.site.register(Category, CategoryAdmin)

标签: pythondjangodjango-modelsdjango-formsdjango-views

解决方案


推荐阅读