1

我有一个模型名称 App_type 和 SOA。

class SOA(models.Model):
      app_type        = models.ManyToManyField(App_type, verbose_name='Application Type')

在我的 forms.py

class SoaForm(forms.ModelForm):
    app_type = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple(), 
                                          queryset=App_type.objects.all(), label='Application Type')
    class Meta:
        model = SOA

字段表单在 django admin 中垂直呈现,占用太多空间。有没有办法水平渲染字段形式?任何帮助或参考将不胜感激。

4

2 回答 2

0

我已经使用 Crispy 字段完成了它。非常简单实用。另外,您可以使用 Bootstrap 工具包。你的生活会更加美好。

http://django-crispy-forms.readthedocs.org/en/1.1.1/tags.html

于 2013-07-16T15:30:26.633 回答
0

正如karthikr 指出的那样,经过超级微调后,这些片段确实有效。

中的原始片段def render(self, name, value, attrs=None, choices=()):

   for column in columns:
        ...
        str_values = set([force_unicode(v) for v in value])
        for i, (option_value, option_label) in column:
            ...
            option_label = conditional_escape(force_unicode(option_label))
            output.append(u'<li><label%s>%s %s</label></li>' % (
                    label_for, rendered_cb, option_label))
        output.append(u'</ul>')
    return mark_safe(u'\n'.join(output))

修改为:

for column in columns:
        ...
        str_values = set([force_unicode(v) for v in value])

        output.append(u'<li>')                               ## added

        for i, (option_value, option_label) in column:            
            ...
            option_label = conditional_escape(force_unicode(option_label)) 

            ##<li> & </li> deleted
            output.append(u'<label%s>%s %s</label>' % (  
                    label_for, rendered_cb, option_label))
    ## added </li>
    output.append(u'</li></ul>')
于 2013-08-28T04:33:36.240 回答