📅  最后修改于: 2023-12-03 15:00:27.707000             🧑  作者: Mango
当在 Django 中定义模型表单时,如果尝试将不可编辑的字段设置为表单字段,则会引发 FieldError。这意味着该字段在创建和更新表单时不应该被包含。
在这个例子中,错误信息指出“日期”字段是不可编辑的,因此不能在表单中使用。这通常发生在尝试将自动设置和管理的字段用于表单时。
如果需要使用该字段的值来创建和更新论坛模型表单,请考虑使用 Django 的后台管理系统或在视图中进行手动设置。
以下是一个示例视图函数,展示如何在表单中手动设置字段:
from django.shortcuts import render
from django.http import HttpResponseRedirect
from .forms import ForumForm
from .models import Forum
def create_forum(request):
if request.method == 'POST':
form = ForumForm(request.POST)
if form.is_valid():
forum = Forum()
forum.title = form.cleaned_data['title']
forum.description = form.cleaned_data['description']
# Set non-editable field manually
forum.created_at = timezone.now()
forum.save()
return HttpResponseRedirect('forum_list')
else:
form = ForumForm()
return render(request, 'create_forum.html', {'form': form})
此代码段中,我们手动设置了不可编辑的“created_at”字段,以便在创建论坛时使用。对于其他可编辑字段,我们使用表单的“cleaned_data”字典从提交的表单数据中获取相应的值。
请注意,这只是一个解决方案示例。在实际情况中,您可能需要根据您的模型和要提交的数据来调整它。
在 Django 中,如果尝试将不可编辑的字段用于模型表单,则会引发 FieldError。为了解决此问题,请手动设置不可编辑字段或使用 Django 的后台管理系统进行管理。这将确保模型的数据一致性,并确保只有经过授权的用户才能更改关键字段。