我有一个表格,它应该从模型中存储的最新条目中接收初始值。但是,如果我通过管理面板编辑或删除模型数据,表单中显示的初始数据将保持不变(尽管它已在模型中删除)。我很困惑我做错了什么。一开始我以为是Chrome保存旧数据,但是用ctr+shift+r
休息后还是一样。
我的表格.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'
请帮我找出为什么旧数据仍然通过表单接收?
编辑:我发现,如果我重新启动服务器数据将被刷新,但这不是生产中的解决方案。如何让表单在每次调用时都获取新数据?
最佳答案
您的 DrgSkaiciuokle
在 Django 启动时导入,然后实例化任何 类属性。因此,当您runserver
或启动您的 Django worker 时,对 .latest()
的查询将执行一次,并且 initial
将不再更改。
在表单的 __init__
方法中设置 initial
,这样每次实例化表单时都会调用它。
关于python - 表单从模型接收旧数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58115123/