【问题标题】:I can't add a value to this user model field我无法向该用户模型字段添加值
【发布时间】:2022-12-25 04:50:48
【问题描述】:

我正在尝试做一个系统,如果他问一个问题,用户可以获得积分,但是当用户这样做时,积分字段不会增加。

我的模型:

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)

我的看法:

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)

当我转到管理页面中的当前用户时,该值不会改变。

【问题讨论】:

  • 首先这是不正确的form.instance.author.points +15它应该是form.instance.author.points += 15
  • 其次,您必须将其保存在数据库中。

标签: python django django-models django-views


【解决方案1】:

您应该使您的代码更加清晰,但正如我所假设的那样,正如 Thierno 所说,您没有访问该对象并且之后没有保存它。

您需要做的是,一旦您提出post 请求,——因为您需要访问用户——,保存您的帖子,然后执行类似以下操作:

post_user = self.request.user 
post_user.points +=15
post_user.save()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-04
    • 2016-09-26
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    相关资源
    最近更新 更多