2012-03-29 4 views
1

Я хотел бы отобразить строку с меткой, текстовое поле и флажок для каждого элемента в базе данных. Мне удалось это сделать, кроме флажка, который находится на новой строке. Я wan't:Несколько полей в одной строке в Django

<tr> 
    <td>Label</td> 
    <td>Input</td> 
    <td>Checkbox</td> 
<tr> 

Но все это я получаю:

<tr> 
    <td>Label</td> 
    <td>Input</td> 
</tr> 
<tr> 
    <td>Checkbox</td> 
</tr> 

Каждый знает, как это сделать?

EDIT:

Чтобы создать форму, что я делаю:

forms.py

class AttributeForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     extra = kwargs.pop('extra') 
     super(AttributeForm, self).__init__(*args, **kwargs) 

     for key in extra: 
      self.fields[key] = forms.CharField(label=key, initial=extra[key], required=False) 
      self.fields['delete_'+key] = forms.BooleanField(label='', required=False) 

views.py

attribute_form = AttributeForm(extra=user) 
return render_to_response('user.html', {'username': username, 'attribute_form': attribute_form}) 

шаблона (user.html)

<form action="" method="post"> 
    <table>{{ attribute_form.as_table }}</table> 
    <input type="submit" value="Save attributes"> 
</form> 

EDIT 2:

Моего шаблона закончился так:

<form action="" method="post"> 
     <table> 
      <tr> 
       {% for field in attribute_form %} 
        {% cycle '<th>' '' %}{% cycle field.label_tag '' %}{% cycle '</th>' '' %} 
        <td>{{ field }}{{ attribute_form.field.errors }}</td> 
        {% if not forloop.last %}{% cycle '' '</tr><tr>' %}{% endif %} 
       {% endfor %} 
      </tr> 
     </table> 
     <input type="submit" value="Save attributes"> 
    </form> 
+0

Как генерировать код? Показать использовать фактический шаблон или код формы. Это для администратора или для пользовательского приложения? –

+0

Можете ли вы показать нам шаблон, который использует Django для этого? –

+0

Обновлен кодом, который я использую. – olofom

ответ

2

.as_table делает каждое поле формы в индивидуальном строка таблицы. Вы должны render the form manually.

+0

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

+0

@olofom Другой способ сделать что? Вы хотите, чтобы Django (или какой-либо другой инструмент) знал, что любое поле с именем «delete_% s» должно быть сгруппировано с полем «% s» и визуализировать их магически одним простым способом, не так ли? – DrTyrsa

+0

Возможно, я не совсем понимаю документацию, но, как я вижу, мне нужно жестко закодировать имя каждого поля в tr и td так же, как я собирался полностью создать таблицу в HTML, а затем использовать Django формы бесполезны? – olofom

Смежные вопросы