¿Es posible obtener datos de request.user en una clase de formulario? Quiero limpiar una dirección de correo electrónico para asegurarme de que sea única, pero si se trata de la dirección de correo electrónico actual de los usuarios, entonces debería pasar.obtener datos de solicitud en Django formulario
Esto es lo que tengo actualmente, que funciona muy bien para crear nuevos usuarios, pero si quiero editar a un usuario me encuentro con el problema de que su correo electrónico no valida, porque parece que ya se tomó. Si pudiera verificar que es su correo electrónico utilizando request.user.email, entonces podría resolver mi problema, pero no estoy seguro de cómo hacerlo.
class editUserForm(forms.Form):
email_address = forms.EmailField(widget=forms.TextInput(attrs={'class':'required'}))
def clean_email_address(self):
this_email = self.cleaned_data['email_address']
test = UserProfiles.objects.filter(email = this_email)
if len(test)>0:
raise ValidationError("A user with that email already exists.")
else:
return this_email
El ejemplo de código es mejor en esta respuesta que en la mía, así que eliminé la mía y la modifiqué, aunque querrá un == en lugar de = en la cláusula if en el método clean_email_address. – Prairiedogg
Reparado. Gracias por atraparlo :) – elo80ka
> Tenga en cuenta que debe pasar request.POST como un argumento de palabra clave, ya que su constructor espera 'usuario' como el primer argumento posicional. esto es específicamente por qué no debe mezclar argumentos de palabras clave (es decir, opcionales) con ** kwargs. En cambio, el constructor no debería tener usuario y simplemente poner esto como la primera línea: usuario = kwargs.pop ('usuario') si 'usuario' en kwargs else Ninguno – jorelli