Kyl*_*ong 7 python django shell field models
反正有没有使用Django shell来修改字段值?我可以创建,删除和查询模型,但我不知道如何更改现有的字段值.
class Game(models.Model):
name = models.CharField(max_length=128, unique=True)
views = models.IntegerField(default=0)
likes = models.IntegerField(default=0)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Game, self).save(*args, **kwargs)
def __str__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
在Django shell中,我试试Game.objects.get(name="testb").likes = 5
,但是likes = 0
当我Game.objects.get(name="testb").likes
之后输入时它仍然会输出.
pra*_*890 13
你应该保存更改,
game = Game.objects.get(name="testb")
game.likes = 5
game.save()
Run Code Online (Sandbox Code Playgroud)
调用Game.objects.get()
从数据库中检索数据。
当你执行该语句时Game.objects.get(name='test').likes = 5
,您将从数据库中检索数据,创建一个Python对象,然后在内存中的该对象上设置一个字段。
然后,当您Game.objects.get(name='test')
再次运行时,您将从数据库中重新提取数据并将 python 对象加载到内存中。请注意,上面,当您设置为 时likes
,5
您纯粹在内存中执行此操作,并且从未将数据保存到数据库中。这就是为什么当您重新拉取数据时,likes
是0
.
如果想要持久化数据,必须game.save()
在设置likes
字段后调用。这会将数据输入数据库,以便下次您通过 检索它时.get()
,您的更改将保留。