Jquery 将modelform下拉字段转换为textfield
我想做的是,当用户想要编辑时,他/她应该能够看到文本字段格式而不是下拉格式的PlotID,因为目前Plot_ID字段显示为下拉而非文本字段Jquery 将modelform下拉字段转换为textfield,jquery,django,Jquery,Django,我想做的是,当用户想要编辑时,他/她应该能够看到文本字段格式而不是下拉格式的PlotID,因为目前Plot_ID字段显示为下拉而非文本字段 <div class="form-group"> {{ plotmanagementform.plotID.errors }} <label for="plotID" class="col-md-4 control-label">Plot ID:</label> <div class="col-md-4 selec
<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>
我想做的是,当用户想要编辑时,他/她应该能够看到文本字段格式而不是下拉格式的PlotID,因为目前Plot_ID字段显示为下拉而非文本字段
<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>
My 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')
<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>
我的表格
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'
<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>
my 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>
{{plotmanagementform.plotID.errors}
绘图ID:
{{plotmanagementform.plotID}
您可以将PlotId字段的小部件更改为如下文本输入:
<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>
self.fields['plotID'].widget=TextInput()
<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>
您必须从django.forms.widgets
导入TextInput
。或者,NumberInput()
在这里更合适
<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>
但如评论中所述,这样做不是一个好主意。使主键或外键ID可编辑不是一个好主意,因为如果出错,数据库和关系很容易失去同步。您可以将PlotId字段的小部件更改为如下文本输入:
<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>
self.fields['plotID'].widget=TextInput()
<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>
您必须从django.forms.widgets
导入TextInput
。或者,NumberInput()
在这里更合适
<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>
但如评论中所述,这样做不是一个好主意。使主键或外键ID可编辑不是一个好主意,因为如果您出错,您的数据库和关系很容易失去同步。为什么要这样做?你的用户很难在不知道的情况下真正知道你要查找的特定绘图实例的id是什么?看看吧,以防万一。我想做的与select2完全不同;我想要的是有一个textfield,用户可以在其中输入他们的字段,而无需下拉菜单。我有一个javascript代码,可以弹出名称而不是ID@Saysemy views.py looks:def edit_farmer_detail(request,plotID,personID):如果不是request.user.is_authenticated():return HttpResponseRedirect(reverse('sign:login'))if request.method='POST':plotmanagementform=plotmanagementform(request.POST)if plotmanagementform.is_有效():plotID=plotmanagementform.cleaned_数据['plotID']返回else:plotmanagement\u实例=plotmanagement.objects.get(farm=personID,plotID=Plot.objects.get(plotID=plotID=plotID,farm=personID))plotmanagementform=plotmanagementform(实例=plotmanagement\u实例)为什么要这样做?你的用户很难在不知道的情况下真正知道你要查找的特定绘图实例的id是什么?看看吧,以防万一。我想做的与select2完全不同;我想要的是有一个textfield,用户可以在其中输入他们的字段,而无需下拉菜单。我有一个javascript代码,可以弹出名称而不是ID@Saysemy views.py looks:def edit_farmer_detail(request,plotID,personID):如果不是request.user.is_authenticated():return HttpResponseRedirect(reverse('sign:login'))if request.method='POST':plotmanagementform=plotmanagementform(request.POST)if plotmanagementform.is_有效():plotID=plotmanagementform.cleaned_数据['plotID']返回else:plotmanagement\u实例=plotmanagement.objects.get(farm=personID,plotID=Plot.objects.get(plotID=plotID=plotID,farm=personID))plotmanagementform=plotmanagementform(实例=plotmanagement\u实例)
<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>