django用户update_fields没有出现在信号中

问题描述

我正在使用django信号在创建用户自动创建用户个人资料, 而且工作正常, 但我也想检查用户是否试图更新其“用户名或电子邮件或.....等”。 我正在尝试检查signal中的这些值,但始终 'update_fields'的值为None!

',如您在'

下的代码块中所见
# create profile automatically  when the user is created using (signal) ##
def create_profile(sender,**kwargs):
if kwargs['created']:
    Profile.objects.create(PRF_user=kwargs['instance'])

if kwargs['update_fields']:
    print ('some table are updated this is a test')

print('all kwargs')
print(kwargs)
print('end kwargs')

   #done create profile automatically  ##

post_save.connect(create_profile,sender=User)

enter image description here

outprint
all kwargs
{'signal': <django.db.models.signals.ModelSignal object at 0x00000000037D2780>,'instance': <User: khder_admin@local.com>,'created': False,'update_fields': No
ne,'raw': False,'using': 'default'}
end kwargs

我如何告诉django填充“ update_fields”值并将其通过信号发送给我的函数

解决方法

您误解了update_fields的用途。它们用于限制应更新的字段的范围,并设置update_fields强制更新查询

如果您想知道更新了哪些字段,则应该手动检查旧的数据库实例字段和要设置的字段。 Django没有对已更新字段的回忆