我在Django上过一堂课:
class admin_new(CreateView):
form_class = UserForm
template_name = 'users/new.html'
success_url = reverse_lazy('users_index')
当用户发布数据(例如:"2009-10 test“)时,我想更改并保存在db:"10-2009测试”中。
当用户想要编辑它时,我需要再次修改保存的数据,这意味着它应该在forms视图中转换为"200-10 test“。
示例:
用户输入: 2009-10测试
保存到db: 10-2009测试
编辑视图: 2009-10测试
保存到db: 10-2009测试
谢谢你的建议。
发布于 2014-02-18 10:20:06
要保存数据,可以在表单中定义自定义函数,如:
class UserForm(ModelForm):
class Meta:
model = User
def clean_name(self):
import re
return re.sub(r'^(\d{4})-(\d{2})(.*)$', r'\2-\1\3', self.cleaned_data['name'])
若要在UpdateView中填充窗体的值,可以重写方法
def get_initial(self):
import re
initial = super(admin_edit, self).get_initial()
p = get_object_or_404(self.model, **self.kwargs)
initial.setdefault('name', re.sub(r'^(\d{4})-(\d{2})(.*)$', r'\2-\1\3', p.name))
return initial
希望这能有所帮助。
发布于 2014-02-18 08:58:08
Datefield的自定义模型字段可能会为您完成这项工作--请参见编写自定义模型字段。下面是一个示例创建一个自定义DJANGO DATETIMEFIELD模型
https://stackoverflow.com/questions/21845542
复制相似问题