2017-01-23 79 views
1

我想要做的是当用户想要编辑时,他/她应该能够以文本字段格式查看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> 
+0

你为什么要这样做?它会很难让你的用户真正知道某个特定情节实例的id是什么 – Sayse

+1

也许你正在寻找select2而不知道它?以防万一,以防万一。 https://select2.github.io/examples.html – makaveli

+0

我想要做的是与select2相比完全不同;我想要的是有一个用户可以输入他们的字段没有下拉的文本字段 –

回答

0

您可以将PlotId场的控件更换一个TextInput这样的:

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

你将不得不从django.forms.widgets进口TextInput。或者在这里可能更适合NumberInput()

但正如评论中所述,这样做并不是一个好主意。将主键或外键ID编辑是不好的,因为如果你犯了一个错误,你的数据库和关系可能很容易失去同步。