Django无法在字段中设置日期

2024-03-28 22:13:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有当前代码:

# ...
from django.utils import timezone


class Order(models.Model):
    # ...
    pay_date = models.DateTimeField(blank=True, null=True)
    # ...

    def pay(self):
        # ...
        self.pay_date = timezone.now()
        self.save()

我在事务块中调用pay方法:

# in one view func.
with transaction.atomic():
    # ...
    order.pay()

在-什么都没发生之后,pay_date字段仍然None。你知道吗

我尝试直接从控制台设置pay_date字段,结果成功了。你知道吗

升级版:

我还尝试在pre_save信号中设置日期,但它仍然不起作用(状态已更改,顺便说一句):

@reciever(pre_save, sender=Order)
def set_pay_date(sender, instance, **kwargs):
    # check the special condition
    old_order = Order.objects.get(id=instance.pk)
    if old_order.state == States.NEW and instance.state == States.PAID:
        instance.pay_date = timezone.now()

Tags: instanceselftruedatemodelssavedeforder