Django 如何水平渲染models.ManyToManyField复选框小部件?
我有一个模型名App_type和SOADjango 如何水平渲染models.ManyToManyField复选框小部件?,django,django-models,checkbox,django-forms,django-admin,Django,Django Models,Checkbox,Django Forms,Django Admin,我有一个模型名App_type和SOA class SOA(models.Model): app_type = models.ManyToManyField(App_type, verbose_name='Application Type') 在我的表格里 class SoaForm(forms.ModelForm): app_type = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMu
class SOA(models.Model):
app_type = models.ManyToManyField(App_type, verbose_name='Application Type')
在我的表格里
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中垂直呈现,占用了太多空间。有没有一种方法可以水平渲染字段形式?任何帮助或参考都将不胜感激。我已经用Crispy fields完成了。非常简单和有用。 此外,您还可以使用引导工具包。你的生活会更美好 因为这些代码片段在经过一次非常小的调整后确实可以工作 def renderself、name、value、attrs=None、choices=中的原始代码段: 修改为:
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>')
?我尝试以这种方式使用代码段app_type=forms.modelMultipleChiceFieldWidget=ColumnCheckboxSelectMultiple,queryset=app_type.objects.all,label='Application type',但仍然不起作用。我在代码段中更改了两件事以使其起作用,我将在下面解释。这些代码片段在这类问题中非常有用。谢谢Karthikr的链接。很高兴它有帮助。一定要把答案贴出来,以便将来能对社区有所帮助。很抱歉延迟贴。我有一个wifi硬件问题>
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>')