为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

动漫人物 2022-08-25 13:58:33
我有一个非常简单的模型和猫的视图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_404from .models import Catsdef 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})操作将始终为 1(这是当前唯一可能的操作)。在“细节”和“互动”的html文件中,我打印出了猫的幸福状态。当我进入交互页面时,猫的幸福状态被打印为7(因为默认/开始幸福感为6)。我希望将此值(7)保存到数据库中,当我再次转到详细信息页面时,它也打印7。但是,即使在详细信息页面上运行函数 cat.play() 后,它仍然会打印 6,这是默认设置。7 是否从未保存到数据库?在这种情况下,self.save() 不起作用吗?我应该如何更改我的代码?
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

你的没有连接到你的数据库,你应该这样写它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


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信