【发布时间】:2011-12-18 10:00:41
【问题描述】:
想象一下,我有 News 带有许多文本字段的模型
class News(models.Model):
title = models.CharField(max_length=255)
subtitle = models.CharField(max_length=255, blank=True)
lead = models.TextField(max_length=4096)
content = models.TextField()
...
last_visited = models.DateTimeField()
每次我的News 对象输出时,我都会更新last_visited 字段:
news.last_visited = datetime.datetime.now()
news.save()
此代码使 Django 覆盖所有模型字段:
UPDATE news SET title='...', subtitle='...', last_visited = '...' WHERE id = '...';
而不仅仅是一个:
UPDATE news SET last_visited = '...' WHERE id = '...';
我担心它有多糟糕,是否值得考虑。
Django 文档提供了查询集更新,但看起来不是很优雅:
def upd(obj, **kwargs):
obj.__class__._default_manager.filter(pk=obj.pk).update(**kwargs)
upd(news, last_visited=datetime.datetime.now())
我使用 mysql 后端。
【问题讨论】:
标签: mysql django django-queryset