django update model不会影响auto_now时间戳

Yun*_*nti 5 django-models

我一直试图调试为什么我的几个模型中的last_updated字段没有被更新时model.objects.filter(**lookups).update(**defaults),例如:

class PaymentMethod(models.Model):
    MONTHLY_DIRECT_DEBIT = 'MDD'
    QUARTERLY_DIRECT_DEBIT = 'QDD'
    CASH_OR_CHEQUE = 'CAC'
    PAY_IN_ADVANCE = 'PYM'
    PAYMENT_CHOICES = (
        (MONTHLY_DIRECT_DEBIT, 'Monthly Direct Debit'),
        (QUARTERLY_DIRECT_DEBIT, 'Quarterly Direct Debit'),
        (CASH_OR_CHEQUE, 'Cash or Cheque'),
        (PAY_IN_ADVANCE, 'Pay Monthly in Advance'),

    )
    unique_id = models.CharField(max_length=3, choices=PAYMENT_CHOICES)
    last_updated = models.DateTimeField(auto_now=True)

    def __str__(self):
Run Code Online (Sandbox Code Playgroud)

在这里,我只是尝试更新单个条目,而不需要将实例加载到内存中.这似乎是一个无法解决的问题,在docshttps://code.djangoproject.com/ticket/15566中解释了'bug'(出于某种原因,我无法在文档中看到它).

但是,更新单行的最佳方法是什么,包括last_updated字段(无需加载到内存中)?

Yun*_*nti 5

它不起作用,因为这个问题已发布(声明不会修复)https://code.djangoproject.com/ticket/22981

.update()只会更新显式传递给它的字段,因此不会更新auto_now = True的datetimefields.