为了账号安全,请及时绑定邮箱和手机立即绑定

表单从模型接收旧数据

表单从模型接收旧数据

一只萌萌小番薯 2022-06-07 18:00:22
我的表单应该从模型中存储的最新条目中接收初始值。但是,如果我通过管理面板编辑或删除模型数据,表单中显示的初始数据将保持不变(尽管它在模型中已被删除)。我对自己做错了什么感到困惑。起初我以为是 Chrome 保存旧数据,但用ctr+shift+r.我的forms.py:from stv.models import BazineKaina,class DrgSkaiciuokle(forms.Form):    bazine_kaina = forms.DecimalField(max_digits=5, decimal_places=2, required=True,                                      label="Įveskite bazinę kainą:",                                      initial= BazineKaina.objects.latest('data'),                                      )    def clean_bazine_kaina(self):        bazine_kaina = self.cleaned_data['bazine_kaina']        return bazine_kaina我的模型.py:class BazineKaina(models.Model):    bazka = models.DecimalField(max_digits=5, decimal_places=2)    data = models.DateField(auto_now=False, auto_now_add=True)    def __str__(self):        return str(self.bazka)    class Meta:        verbose_name_plural = "Bazinė kaina"        get_latest_by = 'data'请帮我找出为什么仍然通过表单接收旧数据?编辑:我发现,如果我重新启动服务器数据将被刷新,但这不能成为生产中的解决方案。如何让表单每次调用时都获取新数据?
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

DrgSkaiciuokle是在 Django 启动时导入的,然后实例化任何类属性。因此,当您或启动您的 Django 工作人员.latest()时会执行一次查询,并且不会再更改。runserverinitial

initial在表单的方法中设置,__init__以便在每次实例化表单时调用它。


查看完整回答
反对 回复 2022-06-07
?
开满天机

TA贡献1786条经验 获得超13个赞

根据dirkgroten 的建议和这个来源,我找到了完整的解决方案:


表格.py:


class DrgSkaiciuokle(forms.Form):


    bazine_kaina = forms.DecimalField(max_digits=5, decimal_places=2, required=True,

                                      label="Įveskite bazinę kainą:",

                                      help_text="Įprastiniams skaičiavimams naudokite einamųjų metų bazinę kainą",

                                      error_messages={'max_digits': 'Bazinė kaina neturi viršyti 5 skaitmenų.'},

                                      )


    def __init__(self, *args, **kwargs):

        initial_arguments = kwargs.get('initial', None)

        updated_initial = {}

        updated_initial['bazine_kaina'] = BazineKaina.objects.latest('data')

        kwargs.update(initial=updated_initial)

        super(DrgSkaiciuokle, self).__init__(*args, **kwargs)



    def clean_bazine_kaina(self):

        bazine_kaina = self.cleaned_data['bazine_kaina']

        return bazine_kaina


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号