python - Django:显示 UpdateView 表单时如何放置现有字段?

标签 python django

我正在制作一个剧集跟踪器网站,当我希望用户编辑节目时,所提供的表单以空白字段开头。如何使用现有字段填写表格?例如,当用户正在观看节目并且最初是第 5 集时,我如何调用 Episode 字段已经为 5 而不是为空的更新表单?

views.py

class ShowUpdate(UpdateView):
    model = Show
    slug_field = 'title'
    slug_url_kwarg = 'show'
    fields = ['description', 'season', 'episode']

show-detail.html

<form action="{% url 'show:show-update' show=show.title %}" method="post">
{% csrf_token %}
<button type="submit">Edit</button>
</form>

最佳答案

您可以使用 UpdateView 中的值填充表单

def get_initial(self):
    return { 'field1': 'something', 'field2': 'more stuff' }

此外,UpdateView 还继承自 SingleObjectMixin,后者提供 get_objectget_queryset,因此您可以使用其中任何一个来获取要填充表单的对象数据。像这样的东西:

def get_object(self):
        return Show.objects.get(pk=self.request.GET.get('pk')) 

Check out the docs for more info

此外,如果您的 url 中有 pk 或 slug 作为参数,它也应该将其提取出来。如:

url(r'^shows/update/(?P<pk>\d+)/$',ShowUpdate.as_view())

关于python - Django:显示 UpdateView 表单时如何放置现有字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39494896/

相关文章:

Python-isinstance-加号(+)的使用

python - 从 C 访问 Numpy 矩阵作为 3D 数组

python - 不使用 openssl 创建证书

Python 从一个函数调用另一个函数

python - 更改 django admin 中外键小部件的大小

python - 动态可扩展Mysql表

django - 信号处理程序应该放在 django 项目中的什么位置?

python - Django 表单 - 在 __init__() 方法中设置初始值的最佳实践

python - 在 Windows 上构建 mysqlclient 时出错

python - 如何在 python 中模拟并仍然允许执行模拟函数的实际代码