【发布时间】:2021-01-04 14:15:35
【问题描述】:
我有一个模型表单,它将 ManyToMany 字段的选项表示为复选框。 两个相关模型如下:
乘客模型:
class Passenger(models.Model):
... attributes etc .....
trip_addons = models.ManyToManyField(AddOn, blank=True)
“添加”模型:
class Addon(models.Model):
name = models.CharField(max_length=254)
description = models.TextField()
price = models.DecimalField(max_digits=8, decimal_places=2)
image = models.ImageField(null=True, blank=True)
image_thumb = models.ImageField(null=True, blank=True)
image_url = models.URLField(max_length=1024, null=True, blank=True)
def __str__(self):
return self.name
但不是呈现默认的 html 复选框,我想在this 链接中呈现“插件”选项更像是第三个示例“选择你的主菜”,除了图片和简短描述外名字。
我创建了自己的模板供小部件使用,并且可以正常工作。我只是想知道是否可以将描述、图像和价格数据传递给这些模板?
forms.py
class CustomCheckbox(forms.CheckboxSelectMultiple):
"""
Creates a custom checkbox select widget that subclasses Django's
CheckboxSelectMultiple and customises it with a different template
"""
template_name = 'bookings/forms/checkbox_select.html'
option_template_name = 'bookings/forms/checkbox_option.html'.
在我的 Modelform 的 Meta 中:
widgets = {
"trip_addons": CustomCheckbox(),
}
【问题讨论】:
-
一直在检查。这些模板应该是什么样子?任何链接到那个。我的意思是哪些变量将允许访问 HTML 模板中的查询集和选项?
标签: forms widget django-crispy-forms