2017-01-23 4 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 Farmer: {{ 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

Почему вы хотите это сделать? вашим пользователям будет очень сложно узнать, что такое идентификатор конкретного экземпляра участка. – Sayse

+1

Возможно, вы ищете select2, даже не зная об этом? Проверьте это на всякий случай. https://select2.github.io/examples.html – makaveli

+0

то, что я хочу сделать, совершенно отличается от select2; я хочу иметь текстовое поле, в котором пользователь может ввести свое поле без выпадающего списка. –

ответ

0

Вы можете изменить виджет поля PlotId к TextInput, как это:

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

Вам придется импортировать TextInput из django.forms.widgets. Или, может быть, здесь более уместно будет NumberInput().

Но, как упоминалось в комментариях, делать это не очень хорошо. Не рекомендуется изменять идентификатор первичного или внешнего ключа, потому что ваша база данных и отношения могут легко выйти из синхронизации, если вы допустили ошибку.

Смежные вопросы