Ich habe benutzerdefinierte Benutzer in Django, so in Benutzererstellungsformular in Admin wir haben password
Feld, und es wird während der Erstellung gespeichert, aber wenn ich bestehenden Benutzer ändern geändert und ich werde das Passwortfeld nicht eingeben/ändern, aber es wird in der Datenbank angezeigt. Unten ist mein CodeUpdate-Passwort nur, wenn es beim Aktualisieren von Benutzer in Django Admin
class ChangeClientEmployeeMasterForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ChangeClientEmployeeMasterForm, self).__init__(*args, **kwargs)
self.fields['groups'].label='Roles'
if 'instance' in kwargs and hasattr(kwargs['instance'], 'client_employee_id'):
self.client_employee_id = kwargs['instance'].client_employee_id
def clean(self):
if self.cleaned_data['client_employee_type'] =='imast':
self.cleaned_data['is_superuser'] = True
else :
self.cleaned_data['is_superuser'] = False
return self.cleaned_data
def save(self, commit=True):
user = super(ChangeClientEmployeeMasterForm, self).save(commit=False)
password = self.cleaned_data["password"]
if password:
user.set_password(password)
if commit:
user.save()
return user
class Meta:
model = ClientEmployeeMaster
Wenn Sie versuchen, vorhandenen Benutzer zu ändern, nehme ich an, dass das 'Passwort'-Feld mit vorhandenen Passwort gefüllt wird und so Ihre Bedingung in der Speichermethode ausgeführt wird. Ich würde vorschlagen, das Passwort leer zu machen, wenn das Formular während der Aktualisierung geladen wird. – nik
ja .. Passwort-Feld ist leer, wenn ich das Formular lade, aber immer noch ist es gleich – Sanjay
Haben Sie nicht Id für jeden Benutzer (die zum Zeitpunkt der Benutzererstellung erstellt werden) ?. Wenn ja, dann, wann immer Sie Daten zum Aktualisieren holen, dann prüfen Sie, ob eine bestimmte Anfrage mit der existierenden ID kommt und aktualisieren Sie dann einfach die anderen Details und nicht das Passwort. –