Как изменить поля модели CustomUser в представлении и формах

Я создаю систему подсчета баллов и хочу регистрировать баллы для тех, кто активен на сайте, например, когда кто-то оставляет комментарий, получает 5 баллов, но у меня ничего не получилось, и я перепробовал несколько методов.

models.py

class CustomUser(AbstractUser):
    activity_point = models.PositiveIntegerField(default=0)

Первый метод в views.py

class NewsDetailView(generic.DetailView):
    model = News
    template_name = 'news/news_details.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data()
        if self.request.user.is_authenticated:
            context['comment_form'] = CommentForm()
        return context
    def post(self, request, *args, **kwargs):
        form = CommentForm(request.POST)
        if form.is_valid():
            news = self.get_object()
            form.instance.author = request.user
            form.instance.news = news
            self.request.user.activity_point += 5 # Here
            form.save()
            return redirect(reverse('news_detail', kwargs={
                'pk': news.uid
            }))

Второй метод в views.py

class CitizenNewsCreateView(mixins.LoginRequiredMixin, generic.CreateView):
    model = News
    template_name = 'news/news_create.html'
    form_class = CitizenReporterForm
    success_url = reverse_lazy('citizen_report_list')

    def get_queryset(self): # Here
        user = CustomUser.objects.filter(username=self.request.user.username)
        change_activity_point = user.activity_point + 5
        return change_activity_point

    def form_valid(self, form):
        form.instance.author = self.request.user
        form.instance.active = False
        form.instance.citizen = True
        return super(CitizenNewsCreateView, self).form_valid(form)

Я ожидаю, что он изменит точку активности на 5.

Вы не сохранили пользователя:

class NewsDetailView(generic.DetailView):
    model = News
    template_name = 'news/news_details.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data()
        if self.request.user.is_authenticated:
            context['comment_form'] = CommentForm()
        return context
    def post(self, request, *args, **kwargs):
        form = CommentForm(request.POST)
        if form.is_valid():
            news = self.get_object()
            form.instance.author = request.user
            form.instance.news = news
            form.save()
            user = self.request.user
            user.activity_point = F('activity_point') + 5
            user.save()
            return redirect('news_detail'pk=news.uid)
Вернуться на верх