Дополнительное поле в форме Джанго - PullRequest
4 голосов
/ 03 декабря 2011

Я создаю форму в Джанго.Когда я размещаю данные, данные естественным образом отправляются.Моя проблема в том, что я хочу передать дополнительное свойство данным POST, которое является не каким-либо из полей формы, а дополнительным.

, чтобы позже я мог сделать что-то вроде (псевдокод):

def form_view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            extra_field = form.cleaned_data['extra_field']
            #or maybe
            extra_field = form.extra_field
            #...
    else:
        form = MyForm()
        #...

Все, что может работать для передачи дополнительного свойства, которое является не полем, а простой переменной, в запрос POST.

Ответы [ 3 ]

4 голосов
/ 03 декабря 2011

Если вы хотите передать что-либо в django как запрос POST из HTML, вы должны использовать скрытый ввод

<input type="hidden" name="foo" value="bar" />

print request.POST['foo'] # out: bar

Если вы хотите изменить словарь POST в python, copy(), чтобы сделать его изменяемым.

mutable_post = request.POST.copy()
mutable_post['foo'] = 'bar'

form = MyForm(mutable_post)
2 голосов
/ 03 декабря 2011

В методе clean вашей формы вы можете добавить новую информацию к cleaned_data, что-то вроде: form.cleaned_data['extra'] = 'monkey butter!', тогда, если form.is_valid(), у вас есть дополнительная информация.

То, что вы будете делать в конечном итоге, будет зависеть от вашей дополнительной информации и от того, где она вам доступна.

1 голос
/ 03 декабря 2011

Есть несколько способов сделать это.Во-первых, вы можете просто добавить его в свой шаблон.

<form action="." method="post">{% csrf_token %}
   {{ form.as_p }}
   <input type="hidden" name="extra_field" value="{{ extra }}" />
   <input type="submit" value="submit" />
</form>

Другой способ - добавить поле в класс формы, но использовать скрытый виджет .Я не уверен, что это то, что вы хотите.Если это так, просто добавьте комментарий, и я могу объяснить этот момент дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...