我要做的是为实例设置一些
“ _attrs”,然后在信号处理程序中使用它们。
我想你的情况可能是:
# Function to Create user Account/Profiledef create_user_account(sender, instance, created, **kwargs): if created: attrs_needed = ['_language', '_field', '_otherfield'] if all(hasattr(instance, attr) for attr in attr_needed): models.Account.objects.create( user=instance, language=instance._language, field=instance._field, otherfield=instance._otherfield)# Create User / User Registrationdef UserRegistration(request): if request.method == 'POST': username = request.POST['fn'].capitalize() + ' ' + request.POST['ln'].capitalize() # CREATE USER newuser = User.objects.create_user( username=username, email=request.POST['email'], password=request.POST['pw']) newuser.first_name = request.POST['fn'].capitalize() newuser.last_name = request.POST['ln'].capitalize() # Set some extra attrs to the instance to be used in the handler. newuser._language = request.POST['language'] newuser._field = request.POST['field'] newuser._otherfield = request.POST['otherfield'] newuser.save() return HttpResponse(username)#Post Save handler to create user Account/Profilepost_save.connect(create_user_account, sender=User)
我讨厌这样做,我想它可能会以可怕的方式破坏,有时很难调试,也没有一种严格的方法来强制处理程序所需的数据,可以定义一个
signal_data(data, signal, instance)来定义处理程序所需的数据。特定实例的信号处理程序。
我没有尝试过的一个不错的选择是使用实例的方法作为信号的处理程序,也许我们可以使用结构化的方法来传递数据。



