在Django中,当调用User_save signal时,如何将请求参数传递给保存用户配置文件的signal_处理程序?
当新用户注册时,我无法自动保存每个用户的附加信息。我已经为用户模型扩展创建了一个配置文件,以保存有关我的用户的其他数据。但是,当在post_保存时调用信号处理程序时,请求中存储的数据不会传递给信号处理程序 以下是我创建的配置文件在Django中,当调用User_save signal时,如何将请求参数传递给保存用户配置文件的signal_处理程序?,django,Django,当新用户注册时,我无法自动保存每个用户的附加信息。我已经为用户模型扩展创建了一个配置文件,以保存有关我的用户的其他数据。但是,当在post_保存时调用信号处理程序时,请求中存储的数据不会传递给信号处理程序 以下是我创建的配置文件 class StudentProfile(models.Model): user = models.ForeignKey(User, unique=True) # Other information about the Student cit
class StudentProfile(models.Model):
user = models.ForeignKey(User, unique=True)
# Other information about the Student
city = models.CharField(max_length=25)
country = models.CharField(max_length=25)
student_age = models.IntegerField(max_length=3)
在我的注册视图中,我调用form.save函数,在该函数中创建用户对象并在数据库中添加新行
def save(self, new_data):
u = User.objects.create_user( new_data['username'],
new_data['email'],
new_data['password'])
return u
之后,调用post_save信号,信号处理程序尝试创建新的配置文件:
def create_student_profile(sender, instance, created, **kwargs):
if created:
StudentProfile.objects.create(user=instance)
post_save.connect(create_student_profile, sender=User)
此时,我在broswer中得到以下错误:
完整性错误/注册/
1048,列“学生年龄”不能为空
我查看了调用堆栈,发现正在执行的SQL查询对于Student_age没有值,对于country和city没有值
sql u'INSERT in student_studentprofile用户id、城市、国家、学生年龄值17、无'
如何将请求参数(如学生年龄、国家/地区和城市)传递给此信号处理程序?我必须手动保存此信息吗
我已经在stackOverflow和Google上彻底搜索了这个问题的答案,结果我空手而归
谢谢您的帮助。我认为您无权访问post\u save中的请求。信号用于通知其他人模型已创建。他们假设您已经创建了模型,并在其中存储了所需的数据。
如果适合您,请使用django注册。django注册发送一个用户注册的信号,并在用户注册时传递请求 是的,不幸的是,您需要将这些字段设置为空。然后在保存用户后在视图中设置它们