2010-09-02 81 views
2

當我顯示ToolBoxEditForm時,它使用一個多選字段。但是我想要的是一種讓用戶可以將他在工具箱中的每個工具編輯爲文本字段的表單。我無法弄清楚如何在多對多領域做到這一點。如何將多對多字段顯示爲文本輸入字段列表?

class Tool(models.Model): 
    tool_name = models.CharField(unique=True, max_length=200) 
...... 

class ToolBox(models.Model): 
    tools = models.ManyToManyField(Tool,max_length=300) 

class ToolBoxEditForm (ModelForm): 
    tools = ??? 
    class Meta: 
     model = ToolBox 
     exclude = ('user', 'popularity',) 

回答

2

我正在做一些猜測工作,因爲我已經玩過ManytoManyField和用於不同目的的表單。我在構造函數中添加了自定義字段操作。

我想一個類似的技巧可以用來創建文本字段。這個例子應該創建三個額外的文本字段,您可以稍後驗證。

class ToolBoxEditForm(forms.Form): 

    def __init__(self, *args, **kwargs): 
     super(ToolBoxEditForm , self).__init__(*args, **kwargs) 
     for i in range(3): 
      self.fields['many_to_many_field_%d' % i] = CharField()