将modelform下拉字段转换为textfield

时间:2017-01-23 07:41:07

标签: jquery django

我想要做的是当用户想要编辑时,他/她应该能够以文本字段格式看到PlotID而不是下拉格式,因为现在Plot_ID字段显示为下拉列表而不是文本字段。

我想要做的是当用户想要编辑时,他/她应该能够以文本字段格式看到PlotID而不是下拉格式,因为现在Plot_ID字段显示为下拉列表而不是文本字段。

我的model.py:

class Farm(models.Model):
    farmID = models.CharField('farmID',primary_key=True, max_length=20)
    fieldsize = models.FloatField('Field Size (hactre)')

class Plot(models.Model):
    farm = models.ForeignKey(Farm,verbose_name='FarmID')
    plotID = models.CharField('PlotID',max_length=50)

class PlotManagement(models.Model):
    farm = models.ForeignKey(Farm,verbose_name='FieldID')
    plotID = models.ForeignKey(Plot,verbose_name='PlotID')

我的form.py

class PlotManagementForm(forms.ModelForm):

    class Meta:
        model=PlotManagement
        exclude=('enteredpersonel',)
    def __init__(self, *args, **kwargs):
        super(PlotManagementForm, self).__init__(*args, **kwargs)
        self.fields['farm'].widget.attrs['class'] = 'form-control'
        self.fields['plotID'].widget.attrs['class'] = 'form-control'

我的template.html:          {{plotmanagementform.farm.errors}}     农民:          {{plotmanagementform.farm}}          

<div class="form-group"> 
{{ plotmanagementform.plotID.errors }}
<label for="plotID" class="col-md-4 control-label">Plot ID:</label>
<div class="col-md-4 selectContainer">
{{ plotmanagementform.plotID }}
</div>
</div>

1 个答案:

答案 0 :(得分:0)

您可以将PlotId字段的窗口小部件更改为TextInput,如下所示:

self.fields['plotID'].widget = TextInput()

您必须从TextInput导入django.forms.widgets。或许NumberInput()更合适。

但正如评论中所提到的,这样做并不是一个好主意。让主要或外部密钥ID可编辑并不是一个好主意,因为如果您的数据库和关系很容易失去同步,那么你犯了一个错误。