Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django中,当调用User_save signal时,如何将请求参数传递给保存用户配置文件的signal_处理程序?_Django - Fatal编程技术网

在Django中,当调用User_save signal时,如何将请求参数传递给保存用户配置文件的signal_处理程序?

在Django中,当调用User_save signal时,如何将请求参数传递给保存用户配置文件的signal_处理程序?,django,Django,当新用户注册时,我无法自动保存每个用户的附加信息。我已经为用户模型扩展创建了一个配置文件,以保存有关我的用户的其他数据。但是,当在post_保存时调用信号处理程序时,请求中存储的数据不会传递给信号处理程序 以下是我创建的配置文件 class StudentProfile(models.Model): user = models.ForeignKey(User, unique=True) # Other information about the Student cit

当新用户注册时,我无法自动保存每个用户的附加信息。我已经为用户模型扩展创建了一个配置文件,以保存有关我的用户的其他数据。但是,当在post_保存时调用信号处理程序时,请求中存储的数据不会传递给信号处理程序

以下是我创建的配置文件

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注册发送一个用户注册的信号,并在用户注册时传递请求

是的,不幸的是,您需要将这些字段设置为空。然后在保存用户后在视图中设置它们