2015-08-10 5 views
3

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

<input type="hidden" value="123" name="fourth" /> 

Мой Джанго HTML страницы выглядят как этот

first.html

<form action="" method="POST"> 
    {{form.first}} 
    {{form.second}} 
    {{form.third}} 
    <input type="hidden" value="123" name="fourth"/> 
</form> 

Проблема заключается в том, когда форма представления я может получить значение первого, второго, третьего и может вставить значение с помощью form.save(). Но я не могу вставить значение четвертого. Потому что я создал скрытое входное значение вручную. Как я могу вставить четвертое значение в базу данных. Plz, кто-нибудь поможет мне сделать это.

Мой столбец таблицы: первый второй третий четвертый

+0

убедитесь, что вы указали скрытое поле, используя одно и то же соглашение об именах, которое Django использует для других полей. Проверьте источник страницы в браузере. Каковы поля 'first',' second', 'third' named (и id)? – Pynchia

+1

Мы не знаем, как выглядит ваша форма и модель. Можете ли вы предоставить их? – GwynBleidD

ответ

2

Существует 2 различных образуют переменные там:

  • Django поля формы (первый, второй, третий)
  • сырья вид полей (четвертый)

Для извлечения полой формы Django Я supose вы используете что-то вроде:

if form.is_valid(): 
    field_name = form.cleaned_data['field_name']. 

Чтобы получить необработанное поле четвёртой вам нужна получить доступ к request.POST как только:

yourVar = request.POST['fourth'] 

# I'm used to the 'get' method like 
yourVar = request.POST.get('fourth', '') 

Последняя инструкция request.POST.get('fourth', '') используется, чтобы избежать ошибки, если в пределах request.POST отсутствует

EDIT: Добавить не-форм-поля в базу данных

я предположить ', что вы используете какое-то модель формы, и вы хотите создать экземпляр, когда вы делаете form.save() но вам нужно добавить скрытое поле четвёртая к примеру, чтобы сделать, так что вы можете сделать это:

instance = form.save() 
instance.fourth_field = request.POST.get('fourth', '') 
instance.save() 

Я думаю, что это может вернуть ошибку, если fourth_field требуется в модели, чтобы избежать этого вы могли бы сделать что-то вроде:

if form.is_valid(): # This statement cleans all fields 

    field1 = form.cleaned_data['first'] 
    field2 = form.cleaned_data['second'] 
    field3 = form.cleaned_data['third'] 
    field4 = request.POST.get('fourth', '') 

    instance = YourModel(first=first, second=second, third=third, fourth=fourth) 
    instance.save() 
Смежные вопросы