我有2个模型个人资料和事件。我想将用户创建的事件数保存到用户个人资料中,这样即使事件被删除,记录仍保留在用户个人资料中
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()
给我错误
如何解决此错误。我尝试添加一个变量并保存该变量,但仍然遇到相同的错误
答案 0 :(得分:1)
total_events
是一个整数,它是Profile
模型的一部分。
您要在模型实例而不是模型字段上执行保存。
self.objects.user.profile.save()
应该可以工作