You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django类视图下如何从数据库填充表单值实现编辑功能

解决方案

方法1:直接使用Django通用UpdateView实现编辑功能(推荐)

UpdateView原生支持根据主键获取对应记录、自动填充表单、更新数据的完整逻辑,无需手动编写数据查询和表单填充代码,你可以直接新增一个编辑专用的视图:

from django.views.generic.edit import UpdateView
from .models import Company

class CompanyUpdateView(UpdateView):
    # 指定要操作的模型
    model = Company
    form_class = CompanyForm
    # 可以复用原来的新增表单模板
    template_name = 'company/company.html'
    success_url = '/company'
    # 如果你的URL中传递的参数名是id而非默认的pk,需要加这一行
    pk_url_kwarg = 'id'

步骤2:配置对应URL

在你的app的urls.py中新增带记录ID参数的访问路径:

urlpatterns = [
    # 原有新增的路径保留
    path('company/', CompanyView.as_view(), name='company_add'),
    # 新增编辑路径,注意参数名和上面视图的pk_url_kwarg对应
    path('company/edit/<int:id>/', CompanyUpdateView.as_view(), name='company_edit'),
]

步骤3:修改页面的编辑按钮跳转链接

在你展示数据列表的模板中,给编辑按钮绑定对应跳转路径即可:

<a href="{% url 'company_edit' company.id %}">编辑</a>

可选方案:单视图同时兼容新增和编辑

如果你不想维护两个视图,也可以修改原来的FormView手动实现实例注入逻辑:

class CompanyView(generic.FormView):
    form_class = CompanyForm
    template_name = 'company/company.html'
    success_url = '/company'

    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        # 检查URL中是否传递了id参数
        if self.kwargs.get('id'):
            # 查询对应记录注入到表单中
            kwargs['instance'] = Company.objects.get(id=self.kwargs['id'])
        return kwargs

    def form_valid(self, form):
        form.save()
        return super().form_valid(form)

对应的URL可以合并为:

path('company/', CompanyView.as_view(), name='company_add'),
path('company/edit/<int:id>/', CompanyView.as_view(), name='company_edit'),

内容的提问来源于stack exchange,提问作者Gaius G D'cruz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:51:00