Django模型中的隐藏字段

Oli*_*Oli 29 django django-models django-forms

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

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

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

我可以:

  • 将字段设置为自动排除?
  • 设置它使它呈现为隐藏(可接受但不完美)?

Gre*_*ger 68

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

{{ form.field_name.as_hidden }}
Run Code Online (Sandbox Code Playgroud)

而不是标准:

{{ form.field_name }}
Run Code Online (Sandbox Code Playgroud)

  • 我通过阅读django源代码来解决这个问题.我真的可以推荐调查django的来源.它非常容易理解和结构良好. (14认同)
  • 你是怎么想出"as_hidden"财产的?我在django docs中找不到它.我也想弄清楚如何使用它,感谢你现在我知道. (13认同)
  • 是的,as_hidden很酷 - 但要注意,它不适用于多值字段(例如MultipleChoiceField,可能还有其他字段). (2认同)

Ofr*_*viv 49

来自有关在表单使用字段子集的文档:

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

  • 你必须承认,这没有多大意义.如果我希望字段是只读的,该怎么办?这就是editable = False应该做的而不是隐藏它. (8认同)
  • 魔法.正是我的需要.谢谢! (2认同)