首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在保存之前更改数据,在Django中选择原值后将其更改

在保存之前更改数据,在Django中选择原值后将其更改
EN

Stack Overflow用户
提问于 2014-02-18 06:02:22
回答 2查看 107关注 0票数 0

我在Django上过一堂课:

代码语言:javascript
运行
复制
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测试

谢谢你的建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-18 10:20:06

要保存数据,可以在表单中定义自定义函数,如:

代码语言:javascript
运行
复制
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中填充窗体的值,可以重写方法

代码语言:javascript
运行
复制
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

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2014-02-18 08:58:08

Datefield的自定义模型字段可能会为您完成这项工作--请参见编写自定义模型字段。下面是一个示例创建一个自定义DJANGO DATETIMEFIELD模型

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21845542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档