2017-01-23 7 views
1

私がしたいのは、編集したいときに、Plot_IDフィールドがドロップダウンとして表示されているため、PlotIDをドロップダウンフォーマットではなくテキストフィールドフォーマットで見ることができるはずです。テキストフィールドではありません。modelformドロップダウンフィールドをテキストフィールドに変換する

私がしたいのは、ユーザーが編集したいときに、PlotIDフィールドがドロップダウンテキストフィールドではないため、現在はドロップダウンフォーマットではないテキストフィールドフォーマットでPlotIDを見ることができるはずです。

マイ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

次のようなのTextInputにPlotIdフィールドのウィジェットを変更することができます:あなたはdjango.forms.widgetsからTextInputをインポートする必要があります

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

。あるいは、おそらくNumberInput()がここでより適切でしょう。

しかし、コメントに記載されているように、これは良い考えではありません。プライマリまたは外部キーIDを編集できるようにすることはお勧めできません。間違いを起こした場合、データベースとリレーションシップが簡単に同期しなくなる可能性があるからです。

関連する問題