我有一个代表工单的模型。其中一个字段是DateField,表示工作订单的创建日期(恰当地命名为:dateWOCreated)。当用户创建新的工作订单时,我希望此dateWOCreated字段自动填充今天的日期,然后显示在模板中。我有一些其他字段我想在没有用户干预的情况下设置,但应该在模板中向用户显示这些值。
我不想简单地从modelForm类中排除这些字段,因为用户可能需要能够在路上编辑这些值。
任何帮助?
由于
答案 0 :(得分:7)
定义模型时,可以为每个字段设置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")),
}
在表单和模型表单中,默认参数的模拟是initial。对于其他字段,您可能需要动态计算视图中的初始字段值。我在下面举一个例子。有关详细信息,请参阅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'})
...