Home > Software engineering >  I can't add a value to this user model field
I can't add a value to this user model field

Time:12-08

I'm trying to do a system where an user gains points if he asks a question but the points field isn't increasing when a user does that.

my model:

class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.PROTECT, related_name='post')
    category = models.ForeignKey(Category, on_delete=models.PROTECT)
    type = models.CharField(max_length=30, choices=TYPE, default='Question')

    title = models.CharField(max_length=100, unique=True)
    content = models.TextField()

    views = models.IntegerField(default=0)
    votes = models.ManyToManyField(User, blank=True, related_name='vote')
    featured = models.BooleanField(default=False)

    date_posted = models.DateTimeField(default=timezone.now)

my view:

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    success_url = '/'
    fields = ['title', 'content', 'category']

    def form_valid(self, form):
        form.instance.author = self.request.user
        form.instance.author.points   15
        return super().form_valid(form)

When I go to the current user in the admin page the value doesn't change.

CodePudding user response:

You should add more clarity to your code, but as I can assume and as Thierno said you are not accessing the object and not saving it afterwards.

What you need to do is once you make your post request, --and since you need access to the user--, save your post and then do something like:

post_user = self.request.user 
post_user_points  =15
post_user.save()
  • Related