如何在django模型中创建小写字段?
使用此方法,我可以将字段另存为小写,但实际情况并非如此 更改现有模型(即内存中)中的字段 我很难弄明白如何在不重写save并在那里进行更改的情况下将此字段强制为小写。但这就分裂了这个小写字段的逻辑。我希望所有这些都能在现场进行。我应该重写什么,以便设置此值强制内存中的小写字母和数据库中的on字母 我不想更改表单,我希望field类中包含所有小写逻辑如何在django模型中创建小写字段?,django,django-models,Django,Django Models,使用此方法,我可以将字段另存为小写,但实际情况并非如此 更改现有模型(即内存中)中的字段 我很难弄明白如何在不重写save并在那里进行更改的情况下将此字段强制为小写。但这就分裂了这个小写字段的逻辑。我希望所有这些都能在现场进行。我应该重写什么,以便设置此值强制内存中的小写字母和数据库中的on字母 我不想更改表单,我希望field类中包含所有小写逻辑 我发现了一个类似这样的局部工作: def pre_save(self, model_instance, add): """ Returns
我发现了一个类似这样的局部工作:
def pre_save(self, model_instance, add):
""" Returns field's value just before saving. """
attr = getattr(model_instance, self.attname)
if attr is not None:
attr = attr.lower()
setattr(model_instance, self.attname, attr)
return attr
def get_prep_value(self, value):
value = super(LowercaseField, self).get_prep_value(value)
if value is not None:
value = value.lower()
return value
它有一点代码味道,在保存之前无法检查值,但如果不重写实际模型类上的setattr并捕获模型类本身内部的处理,我看不到如何做到这一点。您可以通过在models.py文件中添加以下代码来重写Django中的“save”方法
def save(self, *args, **kwargs):
self.yourfiled = self.yourfield.lower()
return super(ModelsName, self).save(*args, **kwargs)
当然,可以使用循环处理所有参数
对于所有现有记录,您可以创建一个管理命令,该命令可以将所有字符串转换为小写
以下是文件:
如果不想更改Save方法,只需在表单中添加“| lower”标记,该标记将在UI中将所有字符串转换为小写
{{ value|lower }}
希望这有帮助:)
{{ value|lower }}