首页 文章

Django模型中的隐藏字段

提问于
浏览
29

前一阵子我做了一个Model课程 . 我为它制作了几个ModelForms,它工作得非常漂亮 .

我最近不得不添加另一个可选(blank = True,null = True)字段,以便我们可以在用户之间存储一些关系数据 . 它本质上是一个推荐系统 .

问题是添加这个新字段意味着引用字段显示我没有更改ModelForms以排除它 . 通常这只意味着额外的10分钟通过并排除它们但在这种情况下,由于项目管理政策不受我的控制,我只能控制此应用程序的模型 .

我可以:

  • 将字段设置为自动排除?

  • 设置它使其呈现为隐藏(可接受但不完美)?

4 回答

  • 1

    如果您可以访问模板,则可以使用以下代码呈现隐藏字段:

    {{ form.field_name.as_hidden }}
    

    而不是标准:

    {{ form.field_name }}
    
  • 68

    您可以定义自定义模型字段子类并覆盖 formfield() 方法以返回带有HiddenInput小部件的字段 . 见the documentation for custom fields .

  • 4

    来自Using a subset of fields on the form上的文档:

    在模型字段上设置editable = False . 因此,通过ModelForm从模型创建的任何表单都不会包含该字段 .

  • 49

    虽然你提到你不能在你的案件中使用排除,但我认为其他人遇到这个答案(比如我自己,根据 Headers )可能会觉得有用 .

    可以使用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',)
        ###.............
    

相关问题