表单集中的 Select2MultipleWidget 未呈现
Posted
技术标签:
【中文标题】表单集中的 Select2MultipleWidget 未呈现【英文标题】:Select2MultipleWidget in formset is not rendering 【发布时间】:2021-05-17 20:26:19 【问题描述】:我正在尝试使用 Select2MultipleWidget
小部件获取表单集,但没有成功。
使用 Django 2.2 LTS。
我的(简化的)模型如下:
class Meal(models.Model):
noon = models.BooleanField("Meal noon", default=False)
noon_options = models.ManyToManyField(MealOption, related_name='real_noon_options', blank=True)
evening = models.BooleanField("Meal evening", default=False)
comments = models.TextField("Comments", blank=True, null=True)
我使用的表格如下:
class MealUpdateForm(forms.ModelForm):
class Meta:
model = Meal
fields = ('noon', 'noon_options', 'evening', 'comments', )
widgets =
'noon_options': Select2MultipleWidget,
当我通过单个项目的测试表单呈现上述内容时,一切正常:我得到了 noon_options
字段的 Select2MultipleWidget。
不过,每当我将表单添加到 modelformset_factory 时,我都会得到 Django 的默认 SelectMultiple
小部件,这不是我想要的。
MealFormSet = modelformset_factory(Meal,
extra=0,
fields=('noon', 'noon_options', 'evening', 'comments', ),
form=MealUpdateForm, )
我将模板中的表单集非常简单地呈现为:
% for form in formset.forms %
<tr>
<td>
form.id
</td>
<td>
form.noon
</td>
<td>
form.noon_options
</td>
<td>
form.evening
</td>
<td>
form.comments
</td>
</tr>
% endfor %
知道我做错了什么吗?
根据this question/answer,我尝试将widgets='noon_options': Select2MultipleWidget
添加到modelformset_factory
定义中,但这无济于事:我仍然坚持使用原始SelectMultiple
小部件。
【问题讨论】:
【参考方案1】:手动渲染表单时,也必须手动加载 JS 和 CSS 文件:
# Required to render the Select2 widgets #
formset.media.js
formset.media.css
% for form in formset.forms %
...
【讨论】:
以上是关于表单集中的 Select2MultipleWidget 未呈现的主要内容,如果未能解决你的问题,请参考以下文章