Skip to main content
 首页 » 编程设计

python之将字段添加到模型中但不在表单中的 django ModelForm

2024年10月24日42lvdongjie

我有一个 Django 模型和一个 ModelForm。该模型有大约 10 个字段,但我只想通过 ModelForm 为用户显示一些字段。所以我有这样的东西:

class Create_EventForm(ModelForm): 
    class Meta: 
        model = Event 
        fields = ['event_name','event_datetime','event_venue','event_url','event_tags','event_zip','event_category','event_description'] 

但是,我无法根据这些数据创建对象,因为仍然缺少字段。在我看来,当我通过 POST 接收数据时,我正在执行以下操作之一:

if request.user.is_authenticated: 
        if request.POST: 
            f = Create_EventForm(request.POST) 
            if f.is_valid(): 
                ne = f.save() 

我想做的是在 f.save() 之前我想根据现有数据进行查找我必须提取模型所需的其他数据并创建对象。知道如何做到这一点吗?

请您参考如下方法:

使用 commit=False 保存表单,编辑返回的实例,然后将其保存到数据库。

if request.POST: 
    f = Create_EventForm(request.POST) 
    if f.is_valid(): 
        event = f.save(commit=False) 
        event.other_value = lookup_value() 
        event.save() 

请参阅有关 ModelForm 的 save method 的文档了解更多信息。