需要在作者评论部分中设置current.username

时间:2020-03-13 13:19:01

标签: python django django-models django-forms django-views

我已经创建了Comment部分。主要目标是只有 注册用户 可以发表评论,并且只能从 其用户名 发帖。

目前,我发帖人(用户名)有问题。在屏幕快照上,您可以看到我可以选择发布来自用户: JOHUA 的评论,但是我当前是从用户登录的: JOHN enter image description here < / p>

我需要设置权限,使用户只能从其用户名中发表评论(也许我应该删除 models.py forms.py 中的username变量和 admin.py 并默认设置,例如用户: 用户名 ,或者您知道如何删除其他用户名从“用户名”列中,因此注册用户只能选择其用户名。

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

某些代码在这里:

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)

0 个答案:

没有答案