是否可以通过django管理面板动态添加新字段

时间:2014-02-04 09:03:27

标签: python django encryption hash

我仍然是django的新手。我用过django管理员。现在我想要做两件事。

1.我需要一个模型存档,它将存储为原始数据的哈希值(类似于密码,但我想指定自己的加密类型和输入时应显示的原始数据)。

2.Admin用户可以通过一个名为“添加另一个字段”的链接添加另一个字段。

对于上面两个问题,我需要知道保存按钮的工作原理(假设是添加用户页面或模型添加新行页面)&此页面文件所在的位置?那我该如何自定义该页面功能呢。我知道&使用自定义模板(.html)页面。

我发现了很多与此相关的问题,但对于像我这样的新手来说理解起来很复杂。我阅读了django文档来定制密码,但无法知道,在哪里申请。

我有一个模型(在管理网站中显示),就像这个model.py

class departments(models.Model):
  priority = models.TextField('prioriy') 
  department = models.TextField('Department')
  emp = models.IntegerField('Emp_id')
  empname = models.TextField('EmpName')
  def __unicode__(self):
    return department

我希望emp字段加密加密& admin用户可以添加更多字段。如果可能的话,请简要介绍一下。这里有更多细节......

首先,我想要一个自定义保存选项,用于将原始值作为哈希数据插入。就像我有一个字段'emp',当管理员用户在该字段中输入原始数据时,它应该在模型中存储散列加密而不是直接行数据。(受密码样式启发)。

其次,在那之后,我可以认为需要额外的新领域,例如想要添加

emp_father_name = models.TextField('Emp_father_Name')

我能想到,我必须使用ModelAdmin,但是如何&哪里。是否类似于使用自定义模板。

希望现在我能够表达它。谢谢你。

2 个答案:

答案 0 :(得分:1)

您可以在模型中覆盖保存方法,如下所示,以便对字段进行散列。

class departments(models.Model):
   priority = models.TextField('prioriy') 
   department = models.TextField('Department')
   emp = models.IntegerField('Emp_id')
   empname = models.TextField('EmpName')
   def __unicode__(self):
      return department

   def save(self, force_insert=False, force_update=False, using=None,      update_fields=None):
       self.emp = ur_hash_func(self.emp)
       return models.Model.save(self, force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields)

这将对你的字段进行哈希处理。

我不明白新的额外部分。

答案 1 :(得分:0)

  

2.Admin用户可以通过一个名为“添加另一个字段”的链接添加另一个字段。

如果我明白了。您可以在教程https://docs.djangoproject.com/en/1.6/intro/tutorial02/#adding-related-objects

中添加来自其他模型的相关对象的新字段或集合