0
我正在使用django,并且我有一个包含密码字段的模型。在创建一个新模型时,我想显示两个密码字段(一个用于输入,另一个用于验证),但编辑模型时,我只想显示一个只读字段,其中包含密码的哈希码。如何创建和编辑模型有不同的形式
我想要做的就是为User
模型做了什么。我查看了代码,但是我还没有找到的User
。
那么,在哪里看Django代码或如何知道我是否在创建或编辑模式。
这里就是我做:
admin.py
class myModelAdmin(admin.ModelAdmin):
form = myModelForm
admin.site.register(myModel, myModelAdmin)
form.py
class myModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(myModelForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance and instance.pk:
self.fields['password'].widget.attrs['readonly'] = True
class Meta:
model = myModel
# I commented this otherwise I get password field on editing mode
"""widgets = {
'password': forms.PasswordInput(),
}"""
models.py
class myModel(models.Model):
name = models.CharField(max_length=100, primary_key=True)
password = models.CharField(_('password'), max_length=128)
def save(self, *args, **kwargs):
self.set_password(str(self.password))
super(myModel, self).save(*args, **kwargs)
def set_password(self, raw_password):
self.password = hashlib.sha512(raw_password).hexdigest()