我有一个代表工作订单的模型。其中一个字段是 DateField,表示创建工作订单的日期(恰本地命名为:dateWOCreated)。当用户创建新的工作订单时,我希望这个 dateWOCreated 字段自动填充今天的日期,然后显示在模板中。我还有一些其他字段,我想在没有用户干预的情况下进行设置,但应该在模板中向用户显示这些值。
我不想简单地从 modelForm 类中排除这些字段,因为用户可能需要能够在以后编辑这些值。
有什么帮助吗?
谢谢
最佳答案
定义模型时,可以设置 default
对于每个字段。默认对象可以是可调用对象。为您 dateWOCreated
我们可以使用可调用字段 date.today
.
# models.py
from datetime import date
class WorkOrder(models.Model):
...
dateWOCreated = models.DateField(default=date.today)
以
MM/DD/YYYY
格式显示日期,您需要覆盖模型表单中的小部件。from django import forms
class WorkOrderModelForm(forms.ModelForm):
class Meta:
model = WorkOrder
widgets = {
'dateWOCreated': forms.DateInput(format="%m/%d/%Y")),
}
在表单和模型表单中,默认参数的模拟是初始的。对于其他字段,您可能需要在 View 中动态计算初始字段值。我在下面举了一个例子。见 Django Docs for Dynamic Initial Values了解更多信息。
# views.py
class WorkOrderModelForm(forms.ModelForm):
class Meta:
model = WorkOrder
def my_view(request, *args, **kwargs):
other_field_inital = 'foo' # FIXME calculate the initial value here
form = MyModelForm(initial={'other_field': 'other_field_initial'})
...
关于Django Forms - 在 View 中设置字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5924253/