Как отобразить поле «многие ко многим» в виде списка полей ввода текста? - PullRequest
2 голосов
/ 02 сентября 2010

Когда я отображаю 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 Ответ

2 голосов
/ 03 сентября 2010

Я немного отгадываю работу, так как я играл с 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()
...