2013-01-24 61 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> 

它的工作原理。