如何将多对多字段显示为文本输入字段列表?

时间:2010-09-02 17:45:27

标签: django django-forms django-models

当我显示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',)

1 个答案:

答案 0 :(得分: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()