如何设置小写的默认字符串? 这是我的模特:
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__
,但它不起作用。我希望每次保存新记录时都使用小写的用户名。感谢。
答案 0 :(得分:17)
只需在save方法中执行此操作即可。即,覆盖mListView = (SwipeMenuListView)rootView.findViewById(R.id.transactionManageListView); //rootView is infalted view of fragment.
类的save
方法。
Model
答案 1 :(得分:10)
虽然覆盖save()
方法是有效的解决方案。我发现通过覆盖Field
方法在Model
级别处理此问题比处理get_prep_value()
级别更有用。
这样,如果您希望在不同的模型中重复使用此字段,则可以采用相同的一致策略。此外,逻辑与save方法是分开的,您可能还想为不同的目的覆盖它。
对于这种情况,你会这样做:
class NameField(models.CharField):
def __init__(self, *args, **kwargs):
super(SnpField, self).__init__(*args, **kwargs)
def get_prep_value(self, value):
return str(value).lower()
class User(models.Model):
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=64)
name = NameField(max_length=200)
phone = models.CharField(max_length=20)
email = models.CharField(max_length=200)
答案 2 :(得分:0)
def save(self, force_insert=False, force_update=False):
self.YourFildName = self.YourFildName.upper()
super(YourFomrName, self).save(force_insert, force_update)