Django:如何将非布尔数据库行呈现为复选框?
Django: How to render non-Boolean database rows as checkboxes?
我的模型:
class LineItems(models.Model):
descr = models.CharField(max_length=100)
cost = models.DecimalField(max_digits=5, decimal_places=2)
我的表格:
class LineItemsForm(forms.ModelForm):
class Meta:
model = LineItems
fields = ['descr', 'cost']
有人可以告诉我 1) 如何将所有产品行呈现为复选框或 2) 如果我的理解有误,正确的方法是什么?
您可以在元数据中指定模型形式 class
class Meta:
widgets = {
'descr': CheckboxInput()
}
反正就是这样。
CheckboxInput 在 django.forms.widgets 我相信
好的,那么你应该这样设计你的模型:
class Product(models.Model):
description = models.TextField()
cost = models.CharField(max_length=100)
# 'cost' should be a CharField because you would want to save currency name also e.g. €
用户不需要复选框来购买它,我认为,更合适的方式只是一个名为 "put into cart" 的 html 按钮,用户可以在其中将商品放入购物车..然后放入购物车页面,您让用户有机会再次删除所选项目。现在你进一步考虑下一步..
找到我要找的东西。在我的表单中:
LINEITEM_CHOICES = [[x.id, x.descr] for x in LineItems.objects.all()]
class LineItemsForm(forms.Form):
food = forms.MultipleChoiceField(choices=LINEITEM_CHOICES,
widget=forms.CheckboxSelectMultiple(), required=False)
在我看来:
{% for radio in lineItems.food %}
<div class="food_radios">
{{ radio }}
</div>
{% endfor %}
我的代码基于 this post.
感谢您的回答。
我的模型:
class LineItems(models.Model):
descr = models.CharField(max_length=100)
cost = models.DecimalField(max_digits=5, decimal_places=2)
我的表格:
class LineItemsForm(forms.ModelForm):
class Meta:
model = LineItems
fields = ['descr', 'cost']
有人可以告诉我 1) 如何将所有产品行呈现为复选框或 2) 如果我的理解有误,正确的方法是什么?
您可以在元数据中指定模型形式 class
class Meta:
widgets = {
'descr': CheckboxInput()
}
反正就是这样。 CheckboxInput 在 django.forms.widgets 我相信
好的,那么你应该这样设计你的模型:
class Product(models.Model):
description = models.TextField()
cost = models.CharField(max_length=100)
# 'cost' should be a CharField because you would want to save currency name also e.g. €
用户不需要复选框来购买它,我认为,更合适的方式只是一个名为 "put into cart" 的 html 按钮,用户可以在其中将商品放入购物车..然后放入购物车页面,您让用户有机会再次删除所选项目。现在你进一步考虑下一步..
找到我要找的东西。在我的表单中:
LINEITEM_CHOICES = [[x.id, x.descr] for x in LineItems.objects.all()]
class LineItemsForm(forms.Form):
food = forms.MultipleChoiceField(choices=LINEITEM_CHOICES,
widget=forms.CheckboxSelectMultiple(), required=False)
在我看来:
{% for radio in lineItems.food %}
<div class="food_radios">
{{ radio }}
</div>
{% endfor %}
我的代码基于 this post.
感谢您的回答。