2013-01-24 106 views
2

我有模式:如何將窗體拆分爲兩列?

class Post(models.Model): 
    path = 'images' + str(datetime.now().year) + '/' + str(datetime.now().month) 
    image = models.ImageField(upload_to=path, null=True) 
    recommended = models.BooleanField(default = False) 
    promoted = models.BooleanField(default = False) 
    title = models.TextField(blank = True) 
    intro = RichTextField(config_name='full_ck', blank = True) 
    text = RichTextField(config_name='full_ck', blank = True) 

,形式:

class Form(forms.ModelForm): 
    id = forms.ModelChoiceField(queryset=Post.objects.all(), widget=forms.HiddenInput()) 

    class Meta: 
     model = Post 

和模板:

<table cellpadding="0" cellspacing="0"> 
<formset> 
{% for field in form %} 
    {% if field.is_hidden %} 
     {{ field }} 
    {% else %} 
     <div class="fieldWrapper"> 
      {% if field.errors %}<div class="errorbox">{% endif %} 
       <p>{{ field.label_tag }}</p> 
       <p>{{ field }}{% block formextrafields %}{% endblock %}</p> 
       <p></p> 
      {% if field.errors %}<p>{{ field.errors }}</p></div>{% endif %} 
     </div> 
    {% endif %} 
{% endfor %} 
</formset> 
</table> 

但我想劃分形式兩列。首先可能是介紹,文本和標題字段,以及第二個字段。怎麼做?

+0

這是一個預感。您可以使用http://docs.python.org/2/library/itertools.html#itertools.groupby嘗試在視圖中對字段進行分組 –

回答

3

我在視圖中使用這樣的:

form = list(form) 

,在模型中我設置以便與:

class Meta: 
    model = Post 
    fields = (my fields in order) 

和模板中:

<!-- first --> 
<table cellpadding="0" cellspacing="0"> 
<formset> 
{% for field in form|slice:":3" %} 
    [...] 
{% endfor %} 
</formset> 
</table> 

<!-- second --> 
<table cellpadding="0" cellspacing="0"> 
<formset> 
{% for field in form|slice:"3:" %} 
    [...] 
{% endfor %} 
</formset> 
</table> 

它的工作原理。