如何设置默认字符域为小写?这是我的模型:
class User(models.Model):
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=64)
name = models.CharField(max_length=200)
phone = models.CharField(max_length=20)
email = models.CharField(max_length=200)
def __init__(self, *args, **kwargs):
self.username = self.username.lower()
我试过__init__
,但它不工作。我想使用户名在小写每次新记录保存。谢谢。
4条答案
按热度按时间waxmsbnn1#
虽然覆盖
save()
方法是一个有效的解决方案。我发现在Field
级别上处理这个问题是有用的,而不是通过覆盖get_prep_value()
方法在Model
级别上处理这个问题。这样,如果您希望在不同的模型中重用该字段,您可以采用相同的一致策略。此外,逻辑与保存方法分离,您可能还希望出于不同的目的覆盖save方法。
对于这种情况,您可以执行以下操作:
2o7dmzc52#
只需在保存方法中执行此操作。即,覆盖
Model
类的save
方法。jqjz2hbq3#
信号也起作用
pxq42qpu4#