Django ..我需要有一个DateField,当auth_user表更新时,应该更新

时间:2017-09-02 07:02:31

标签: python django django-rest-framework

我创建了userprofile表。在该表中,我有一个字段 date_updated 。当auth_user表或userprofile表更新时,我的date_updated表应自动更新。

Models.py

class UserProfile(models.Model):
    user = models.ForeignKey(User, related_name='userprofile', on_delete=models.CASCADE)
    phone_number = models.CharField(max_length=15)
    known_languages = models.CharField(max_length=100)
    date_updated = models.DateTimeField(auto_now=False, null=True)
    user_domain = models.CharField(max_length=100, default=None)

任何人都可以帮助我?????

1 个答案:

答案 0 :(得分:0)

post_save信号(https://docs.djangoproject.com/en/1.11/ref/signals/#post-save)是实现此目的的一种方法。它们在模型更改后被解雇。

以下是注册pre_save信号的示例:https://docs.djangoproject.com/en/1.11/topics/signals/#connecting-to-signals-sent-by-specific-senders(请务必阅读"此代码应该在哪里生效?")

首先,请尝试使用UserProfile:

from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.timezone import now
from .models import UserProfile


@receiver(post_save, sender=UserProfile)
def update_date(sender, instance, **kwargs):
    instance.date_updated = now()
    instance.save()

必须在User型号上注册另一个接收器以进行更改。