在 Django 中更改模型字段 Shell
Changing model field within the Django Shell
有没有办法用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
在 Django shell 中,我尝试 Game.objects.get(name="testb").likes = 5
,但当我随后输入 Game.objects.get(name="testb").likes
时它仍然输出 likes = 0
。
您应该保存更改,
game = Game.objects.get(name="testb")
game.likes = 5
game.save()
调用 Game.objects.get()
从数据库中检索数据。
当您执行语句 Game.objects.get(name='test').likes = 5
时,您正在从数据库中检索数据,创建一个 python 对象,然后在内存中为该对象设置一个字段。
然后,当您再次 运行 Game.objects.get(name='test')
时,您正在重新从数据库中提取数据并将一个 python 对象加载到内存中。请注意,在上面,当您将 likes
设置为 5
时,您纯粹是在内存中进行操作,而不会将数据保存到数据库中。这就是为什么当你重新拉取数据时,likes
是 0
.
如果要持久化数据,必须在设置likes
字段后调用game.save()
。这会将数据输入数据库,以便下次您通过 .get()
检索它时,您的更改将保留。
如果您需要更改所有项目的所有字段,试试这个:
from shop.models import Product
Product.objects.filter(recommend=True).update(recommend=False)
你可以在 Django 中使用它 Shell。玩得开心:)
有没有办法用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
在 Django shell 中,我尝试 Game.objects.get(name="testb").likes = 5
,但当我随后输入 Game.objects.get(name="testb").likes
时它仍然输出 likes = 0
。
您应该保存更改,
game = Game.objects.get(name="testb")
game.likes = 5
game.save()
调用 Game.objects.get()
从数据库中检索数据。
当您执行语句 Game.objects.get(name='test').likes = 5
时,您正在从数据库中检索数据,创建一个 python 对象,然后在内存中为该对象设置一个字段。
然后,当您再次 运行 Game.objects.get(name='test')
时,您正在重新从数据库中提取数据并将一个 python 对象加载到内存中。请注意,在上面,当您将 likes
设置为 5
时,您纯粹是在内存中进行操作,而不会将数据保存到数据库中。这就是为什么当你重新拉取数据时,likes
是 0
.
如果要持久化数据,必须在设置likes
字段后调用game.save()
。这会将数据输入数据库,以便下次您通过 .get()
检索它时,您的更改将保留。
如果您需要更改所有项目的所有字段,试试这个:
from shop.models import Product
Product.objects.filter(recommend=True).update(recommend=False)
你可以在 Django 中使用它 Shell。玩得开心:)