Представьте, у меня есть 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.