Я создал Comment
раздел. Основная цель состоит в том, что только зарегистрированных пользователей могут оставлять комментарии и только с их имена пользователей .
Пока у меня проблема с тем, кто ( username ) публикует сообщение. На скриншоте видно, что я могу оставить комментарий от пользователя: JOHUA , но в данный момент я вошел в систему от пользователя: JOHN
Мне нужно установить разрешение для пользователя оставлять комментарии только от своего имени пользователя (возможно, мне следует удалить переменную username
в models.py , forms.py и 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)