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.

感谢您的回答。