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