dsa*_*laj 5 python django django-models
这是我想做的:
def createNewsletterHash():
hash = hashlib.sha256()
hash.update(str(time.time()))
hash.update(emailValueOfThisModel) # HOW TO DO THIS?
return hash.hexdigest()
class NewsletterSubscriber(models.Model):
email = models.EmailField(max_length=70, unique=True)
hash = models.CharField(default=createNewsletterHash, unique=True)
Run Code Online (Sandbox Code Playgroud)
我假设在创建对象时不可能获取其他字段的值。但是有没有一种更干净的方法可以做到这一点,然后在创建对象后设置哈希值或在创建时显式设置它,例如:
NewsletterSubscriber.objects.create(email='email@email.com', hash=createNewsletterHash('email@email.com'))
Run Code Online (Sandbox Code Playgroud)
并且不使用哈希字段的默认参数?
您可以在创建时在save模型的方法中获取其他字段的值。
class NewsletterSubscriber(...):
...
hash = models.CharField(blank=True, max_length=150)
def save(self, *args, **kwargs):
if not self.pk: # this will ensure that the object is new
self.hash = createNewsLetterHash(self.email)
super().save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2798 次 |
| 最近记录: |