如何重载类成员的赋值?

Ele*_*tro 1 python django class variable-assignment

我正在用Django用Python编写一个Player模型类,我遇到了一个密码成员的小问题.我希望密码在分配时自动进行哈希处理,但我找不到任何关于重载赋值运算符或任何内容的信息.有没有什么方法可以重载分配,password以便自动执行hashlib.md5(password).hexdigest()它?

from django.db import models

class Player(models.Model):
    name = models.CharField(max_length=30,unique=True)
    password = models.CharField(max_length=32)
    email = models.EmailField()
Run Code Online (Sandbox Code Playgroud)

Krz*_*soń 6

你不能使用属性和覆盖字段的setter吗?

引用django文档:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

    def _get_full_name(self):
        return "%s %s" % (self.first_name, self.last_name)

    def _set_full_name(self, combined_name):
        self.first_name, self.last_name = combined_name.split(' ', 1)

    full_name = property(_get_full_name)

    full_name_2 = property(_get_full_name, _set_full_name)
Run Code Online (Sandbox Code Playgroud)