问题描述
我正在使用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)
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没有对已更新字段的回忆