前段时间我做了一个Model课程。我为它制作了几个ModelForms,它工作得很漂亮。
我最近不得不向其添加另一个可选(blank = True,null = True)字段,以便我们可以在用户之间存储一些关系数据。它本质上是一个推荐系统。
问题是添加这个新字段意味着引用字段显示我没有更改ModelForms以排除它。通常这只意味着额外的10分钟通过并排除它们,但在这种情况下,由于项目管理政策不受我的控制,我只能控制此应用程序的模型。
我可以:
答案 0 :(得分:68)
如果您有权访问该模板,则可以使用以下代码呈现隐藏字段:
{{ form.field_name.as_hidden }}
而不是标准:
{{ form.field_name }}
答案 1 :(得分:49)
来自Using a subset of fields on the form上的文档:
在模型字段上设置editable = False。因此,通过ModelForm从模型创建的任何表单都不会包含该字段。
答案 2 :(得分:4)
您可以定义自定义模型字段子类并覆盖formfield()
方法以返回带有HiddenInput小部件的字段。请参阅the documentation for custom fields。
答案 3 :(得分:1)
虽然你提到你不能在你的案件中使用排除,但我认为其他遇到这个答案的人(比如我自己,基于标题)可能会觉得它有用。
可以在ModelAdmin中使用exclude
有选择地隐藏字段,这是我正在处理的内容的片段:
class ItemsAdmin(admin.ModelAdmin):
form = ItemsForm
actions = None
list_display = ('item_id', 'item_type', 'item_title', 'item_size', 'item_color',)
search_fields = ('item_id', 'item_title',)
inlines = [ImageInline,]
readonly_fields = ('disable_add_date','disable_remove_date',)
exclude = ('add_date', 'remove_date',)
###.............