我已经创建了Comment
部分。主要目标是只有 注册用户 可以发表评论,并且只能从 其用户名 发帖。
目前,我发帖人(用户名)有问题。在屏幕快照上,您可以看到我可以选择发布来自用户: JOHUA 的评论,但是我当前是从用户登录的: JOHN < / 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)