Django表单-在视图中设置字段值

Django表单-在视图中设置字段值,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我有一个代表工单的模型。其中一个字段是DateField,表示创建工单的日期(恰当地命名为:dateWOCreated)。当用户创建新工单时,我希望此dateWOCreated字段自动填充todays date,然后显示在模板中。我有一些其他字段,我想在没有用户干预的情况下设置,但应该在模板中向用户显示这些值 我不想简单地从modelForm类中排除这些字段,因为用户可能需要能够编辑这些值 有什么帮助吗 谢谢定义模型时,可以为每个字段设置一个。默认对象可以是可调用的。对于您的dateWOCrea

我有一个代表工单的模型。其中一个字段是DateField,表示创建工单的日期(恰当地命名为:dateWOCreated)。当用户创建新工单时,我希望此dateWOCreated字段自动填充todays date,然后显示在模板中。我有一些其他字段,我想在没有用户干预的情况下设置,但应该在模板中向用户显示这些值

我不想简单地从modelForm类中排除这些字段,因为用户可能需要能够编辑这些值

有什么帮助吗


谢谢

定义模型时,可以为每个字段设置一个。默认对象可以是可调用的。对于您的
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。对于其他字段,可能需要在视图中动态计算初始字段值。我在下面举了一个例子。有关更多信息,请参阅

# 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'})
    ...

甜心,看起来对我有用。不过,我有一个跟进问题。如果我使用default=date.today方法,它将给出一个YYYY-MM-DD的值。我需要将其更改为MM/DD/YYYY。我尝试了date.today().strftime(%m\/%d\/%Y),但django不喜欢这样。有什么想法吗?没关系,Django同意我的YYYY-MM-DD格式。谢谢