Django Forms - 在 View 中设置字段值

标签 django django-models django-forms django-views

我有一个代表工作订单的模型。其中一个字段是 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/

相关文章:

python - 为什么 'model' 对象不可迭代?

python - Django,使用自定义用户模型添加好友

django - 一起使用 Django 和 Bootstrap Studio

django - 我如何从 postgresql View 表中获取对象列表来显示

python - 如何根据包含 FileField 的模型在 DjangoWebApp 中获取文件名?

django - 不能分配必须是实例 Django

python - 找不到gunicorn命令,但它在我的requirements.txt中

python - 如何区分 django 模板中的列表和字符串

mysql - 使用mysql在django模型charfield中获取空白语句

python - 无法在 Django 1.9 中禁用foreignkey引用完整性检查