Django self.save()没有更新模型的状态



我有一个非常简单的猫模型和视图py文件(试图测试/学习django的基本功能。然而,猫的幸福状态从未真正更新。

class Cats(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE)
name = models.CharField(max_length = 200)
description = models.TextField()
happiness = 6
def pet(self):
self.happiness = self.happiness+1
self.save()
from django.shortcuts import render, get_object_or_404
from .models import Cats
def cat_detail(request, pk):
cat = get_object_or_404(Cats, pk=pk)
return render(request, 'cats/cat_detail.html', {'cat': cat})
def cat_interact(request, pk, action):
cat = get_object_or_404(Cats, pk=pk)
pet = False
if(action == 1):
cat.pet()
pet = True
return render(request, 'cats/cat_interact.html', {'cat': cat, 'pet': pet})

action将始终为1(这是当前唯一可能的操作(。在"detail"one_answers"interactive"的html文件中,我打印出了猫的幸福状态。当我进入互动页面时,猫的幸福状态打印为7(因为默认/启动幸福是6(。我希望这个值(7(被保存到数据库中,当我再次转到详细信息页面时,它也会打印7。然而,即使在详细信息页面上运行了函数cat.play((,它仍然会打印6,这是默认值。7是否从未保存到数据库中?self.save((在这种情况下不起作用吗?我应该如何更改代码?

您的happiness没有连接到数据库,您应该像这样编写

class Cats(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE)
name = models.CharField(max_length = 200)
description = models.TextField()
happiness = models.IntegerField(default = 6)

然后这个部分

def pet(self):
self.happiness = self.happiness+1
self.save()

happiness保存到DB

最新更新