2013-04-26 5 views
0

저는 django를 처음 사용하기 때문에 다음과 같은 모델을 만들었습니다. 나는 관리자 패널에서 새로운 Apiuser가 생성 될 때이 api_key와 secret_key가 자동으로 채워지 길 원합니다.Django 모델 필드 채우기

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 갈 좋을 것. 그것은 대부분의 목적을 위해 충분히 빠르고 무작위 적입니다. 그렇지 않으면 psudeo-random이 아닌 crypt-random 인 os.urandom을 시도하십시오. 원래 코드 - mod 64를 사용하여 귀하의 의도를 이해할 수 있지만 보안 지점을 사용하여 볼 수 없습니다. – CppLearner

답변

3

당신이 post_save 신호를 사용하여, 예를 들어 : 여기서 API_KEY SECRET_KEY

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

를 생성

논리 모델 신호에

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

설명서를 읽었습니까? 수많은 예제. –