Django - 属性和使用ModelForm重新定义字段?

2024-05-29 10:39:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在学习表单是如何工作的,现在ModelForms。你知道吗

在由Max Goodridge制作的视频中,他为他的ModelForm类中的一个ModelFields重新定义了一个字段。也就是说,他手动地将一个字段添加到他的ModelForm类中,该类可以由ModelForm框架自动生成。从我到目前为止所读到和理解的情况来看,这可能是需要避免的。不过,这不是我的问题所在。你知道吗

我想知道如何在ModelForm类中重新定义字段。在Django文档中,有一个示例说明ModelForm实例将为指定的每个模型字段都有一个form字段。当在ModelForm实例中显式定义表单字段时,会发生什么情况?是否生成了两个字段,或者ModelForm是否识别出一个字段已经定义,因此没有生成另一个字段?你知道吗

此外,向视图中的ModelForm实例添加属性到底是做什么的?例如,我看到过:

form = ExampleForm(request.POST)
if form.is_valid():
    post = form.save(commit=False)
    post.user = request.user    # herein lies my confusion
    post.save()

这里到底发生了什么?我见过有人这样做,并添加了一个时间戳,但我不明白它到底是做什么的。假定,.save()方法识别属性名'user',并将其添加到数据库中(如果该名称与模型字段名'user'相对应)?你知道吗

  1. ModelForm实例中显式定义表单字段时会发生什么?

  2. ModelForm实例中为模型字段添加带有信息的属性是如何工作的?

谢谢你!你知道吗


Tags: 实例模型form表单属性定义requestsave
1条回答
网友
1楼 · 发布于 2024-05-29 10:39:09

在类级别定义字段时,窗体将使用该定义,而不是从模型字段创建一个定义。如果你想完全定制一个字段,这绝对不是一件可以避免的事情。你知道吗

你的第二个问题很难理解。保存不是“识别”任何东西。form.save()返回模型的实例,您可以在该实例上将任何字段值设置为正常值。你知道吗

相关问题 更多 >

    热门问题