gpt4 book ai didi

django - 从ModelForm删除字段

转载 作者:行者123 更新时间:2023-12-04 04:58:28 24 4
gpt4 key购买 nike

我有一个简单的ModelForm:

class MyForm(ModelForm):

def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
del self.fields['name']

如您所见,我尝试从表单的字段列表中删除一个字段(该字段明确存在于模型中),但出现异常:
TemplateSyntaxError at [..]

Caught an exception while rendering: "Key 'name' not found in Form"

我没有编写自定义表单,因此发生错误的模板是:
/templates/admin/includes/fieldset.html, error at line 4

有任何想法吗?

- 更新 -

该问题仅出现在管理区域中。

-更新2-

也许跟踪转储提供了更多信息:
Original Traceback (most recent call last):
File "/Library/Python/2.5/site-packages/django/template/debug.py", line 71, in render_node
result = node.render(context)
File "/Library/Python/2.5/site-packages/django/template/defaulttags.py", line 155, in render
nodelist.append(node.render(context))
File "/Library/Python/2.5/site-packages/django/template/defaulttags.py", line 239, in render
value = bool_expr.resolve(context, True)
File "/Library/Python/2.5/site-packages/django/template/__init__.py", line 546, in resolve
obj = self.var.resolve(context)
File "/Library/Python/2.5/site-packages/django/template/__init__.py", line 687, in resolve
value = self._resolve_lookup(context)
File "/Library/Python/2.5/site-packages/django/template/__init__.py", line 722, in _resolve_lookup
current = current()
File "/Library/Python/2.5/site-packages/django/contrib/admin/helpers.py", line 81, in errors
return mark_safe(u'\n'.join([self.form[f].errors.as_ul() for f in self.fields]).strip('\n'))
File "/Library/Python/2.5/site-packages/django/forms/forms.py", line 105, in __getitem__
raise KeyError('Key %r not found in Form' % name)
KeyError: "Key 'name' not found in Form"

在管理区域中,我使用了Grapelli-Theme。也许这与问题有关?

最佳答案

我有同样的问题。这就是我在新的Django(主干)中使其工作的方式:

class MyModelAdmin(admin.ModelAdmin):
# Your stuff here..

def get_form(self, request, obj=None, **kwargs):
if request.user.is_staff: # condition
self.exclude = ('field',)
return super(PublishAdmin, self).get_form(request, obj=obj, **kwargs)

通过覆盖 get_form方法并将逻辑放在此处,您可以选择要显示的 Form。在上面,当满足条件时,我已经显示了标准表格。

关于django - 从ModelForm删除字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1466512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com