2013-04-26 117 views
0

我是django新手,我創建瞭如下模型。我想從管理面板創建新的Apiuser時,自動填充這些api_key和secret_key。填充Django模型字段

邏輯用於產生API_KEY和SECRET_KEY

".join([random.choice(string.letters + string.digits + string.punctuation) for _ in xrange(64)]) 

這裏是模型:

class ApiUser(models.Model): 
    name = models.CharField(max_length = 50) 
    email = models.EmailField() 
    api_key = RandomAlphaNum(editable=False) 
    secret_key = RandomAlphaNum(editable=False) 
    quota = models.IntegerField() 
    used = models.IntegerField() 
    datejoined = models.DateTimeField(auto_now_add = True) 
    status = models.CharField(max_length=1, choices=STATUS_CHOICES) 
+1

我建議使用SHA1去。它對於大多數目的而言足夠快速和隨機。否則,嘗試使用密碼隨機的os.urandom,而不是psudeo-random。我可以理解你的意圖使用原始代碼 - mod 64,但我沒有看到使用它的安全性。 – CppLearner 2013-04-26 07:59:26

回答

3

可以使用post_save信號,例如

from django.db.models.signals import post_save 
from django.dispatch import receiver 
from myapp.models import MyModel 

@receiver(post_save, sender=MyModel) 
def my_handler(sender, **kwargs): 
    # do stuff 

更多信號:https://docs.djangoproject.com/en/dev/topics/signals/

+1

你甚至讀過文檔嗎?一些例子。 – 2013-04-26 08:11:55