📜  django.core.exceptions.FieldError:不能为论坛模型表单指定“日期”,因为它是不可编辑的字段 - Python (1)

📅  最后修改于: 2023-12-03 15:00:27.707000             🧑  作者: Mango

Django FieldError: 不能为论坛模型表单指定“日期”字段

当在 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 的后台管理系统进行管理。这将确保模型的数据一致性,并确保只有经过授权的用户才能更改关键字段。