python - 如何在 django 表单集中显示隐藏的自动字段

标签 python django formset

使用表单集显示时,Django 自动字段默认是隐藏的。最好的展示方式是什么?

目前,模型声明为,

class MyModel:
   locid = models.AutoField(primary_key=True)
   ...

当使用 Django 表单集呈现时,

class MyModelForm(ModelForm):
  class Meta:
    model = MyModel
    fields = ('locid', 'name')

它在页面上显示为,

<input id="id_form-0-locid" type="hidden" value="707" name="form-0-locid"/>

谢谢。


编辑

我创建这样的表单集 -

LocFormSet = modelformset_factory(MyModel) 
pformset = LocFormSet(request.POST, request.FILES, queryset=MyModel.objects.order_by('name')) 

第二次编辑

看起来我没有使用我在那里定义的自定义表单类,所以问题需要稍微修改..

如何从自定义表单(将显示隐藏字段)创建表单集以及使用自定义查询集?

目前,我可以从 BaseModelFormSet 类继承并使用自定义查询集,也可以使用 ModelForm 类向表单添加自定义字段。有没有办法用表单集来完成这两个任务?


第三次编辑

我现在正在使用,

class MyModelForm(ModelForm):
  def __init__(self, *args, **kwargs):
    super(MyModelForm, self).__init__(*args, **kwargs)
    locid = forms.IntegerField(min_value = 1, required=True)
    self.fields['locid'].widget.attrs["type"] = 'visible'
    self.queryset = MyModel.objects.order_by('name')
  class Meta:
    model = MyModel
    fields = ('locid', 'name')

LocFormSet = modelformset_factory(MyModel, form = MyModelForm)
pformset = LocFormSet()

但这仍然不行

  • 显示locid
  • 使用指定的自定义查询。

最佳答案

尝试更改默认字段类型:

from django import forms
class MyModelForm(ModelForm):
  locid = forms.IntegerField(min_value=1, required=True)
  class Meta:
    model = MyModel
    fields = ('locid', 'name')

编辑:已测试且有效...

关于python - 如何在 django 表单集中显示隐藏的自动字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/896153/

相关文章:

Python/Cython 自定义格式化程序字符串表示类型

python - Django 使用 AJAX 查看返回值

python - Django TabularInline 字段在更新内联字段时出错

python - Django : I can't add more than one row in a Formset without getting an error

Django 模型表单集显示数据库数据而不是空表单集

python - Django:REST 框架登录路由的反向不起作用

python - 如何创建具有 get 和 set 方法的类?

Django - 删除 HTTPS 重定向

django - 模态在本地工作正常,但在托管网络中无法工作

python - form.is_valid() 为 false 时如何访问数据