代码之家  ›  专栏  ›  技术社区  ›  Samir Tendulkar

django attributeError:“int”对象没有“save”属性

  •  0
  • Samir Tendulkar  · 技术社区  · 7 年前

    我有两个模型配置文件和事件。我想将用户创建的事件数保存到用户配置文件中,这样即使删除了事件,记录也会保留在用户配置文件中。

    class Profile(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        total_events = models.IntegerField(default=0) 
    
    class Event(models.Model):
        user = models.ForeignKey(User, related_name='seller')
        ...
    

    以下是我的观点

    class CreateEvent(IsVerifiedMixin, CreateView):
        model = Event
        form_class = EventForm
        template_name = 'event/event_form.html'
    
        def form_valid(self, form, *args, **kwargs):
            self.object = form.save(commit=False)
            self.object.user = self.request.user
            print(self.object.user.profile.total_events) #This prints 0
            self.object.user.profile.total_events += 1
            print(self.object.user.profile.total_events) # This prints 1
            self.object.user.profile.total_events.save() # If I don't use this statement it does not save to database. But It gives me the above error
            self.object.save()
            return super().form_valid(form)
    

    这条线 self.object.user.profile.total_events.save() 给了我错误

    如何修复此错误。我试图添加一个变量并保存该变量,但仍然得到相同的错误

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jason    7 年前

    total_events 是一个整数,它是 Profile 模型。

    您希望对模型实例而不是模型字段执行保存。

    self.objects.user.profile.save() 应该工作