Skip to main content
 首页 » 编程设计

python之如何在 django formset 中显示隐藏的自动字段

2024年09月03日38www_RR

默认情况下,使用表单集显示的 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() 

但这还是不行

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

请您参考如下方法:

尝试更改默认字段类型:

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

编辑: 测试和工作...