Tenho o seguinte trecho de código no meu django.form.py:
class UsuariosModificarForm(forms.Form):
username = forms.CharField(label='Username', max_length=10, widget=forms.TextInput(attrs={'value': user.username}))
password = forms.CharField(required=False, label='Password', max_length=20, widget=forms.TextInput(attrs={'placeholder': user.password}))
first_name = forms.CharField(label='Nome', max_length=50, widget=forms.TextInput(attrs={'value': user.first_name}))
last_name = forms.CharField(label='Sobrenome', max_length=50, widget=forms.TextInput(attrs={'value': user.last_name}))
email = forms.EmailField(label='E-mail', required=False, widget=forms.TextInput(attrs={'value': user.email}))
admin = forms.BooleanField(label='Marque se o usuario for Administrador', required=False)
No caso queria criar um form modificador de dados que pega os dados antigos do usuário, exibe em html através do widget value. Entretanto, não sei como passar o atributo user para dentro da class UsuariosModificarForm pois a mesma não aceita nada além de forms.Form.
De gambiarra eu fiz o seguinte:
def modificar_form(user=None,request=None):
class UsuariosModificarForm(forms.Form):
username = forms.CharField(label='Username', max_length=10, widget=forms.TextInput(attrs={'value': user.username}))
password = forms.CharField(required=False, label='Password', max_length=20, widget=forms.TextInput(attrs={'placeholder': user.password}))
first_name = forms.CharField(label='Nome', max_length=50, widget=forms.TextInput(attrs={'value': user.first_name}))
last_name = forms.CharField(label='Sobrenome', max_length=50, widget=forms.TextInput(attrs={'value': user.last_name}))
email = forms.EmailField(label='E-mail', required=False, widget=forms.TextInput(attrs={'value': user.email}))
admin = forms.BooleanField(label='Marque se o usuario for Administrador', required=False)
if user == None: return UsuariosModificarForm(request)
else: return UsuariosModificarForm()
E eu chamo a função modificar_form dentro da views.py:
Exemplo:
if request.method == 'POST':
form = modificar_form(request=request.POST)
Dá certo, porém achei meio "jeitinho" queria saber como fazer sem ter que dar esse contorno e se é possível pois sou iniciante no Django.
Um exemplo do que eu quero fazer é o próprio html do django.admin onde podemos visualizar as informações dos usuários e modificar de acordo com o que precisarmos.