Моя модель:

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) как это сделать, если я прихожу неправильно?

0
ukalumni 6 Янв 2016 в 08:07

3 ответа

Лучший ответ

Нашел то, что искал. В моей форме:

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 %}

Мой код основан на этой публикации.

Спасибо за ответ.

0
ukalumni 8 Янв 2016 в 02:01

Хорошо, тогда вы должны разработать свою модель следующим образом:

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. €

Пользователям не нужен флажок, чтобы купить его, я думаю, более подходящим способом была бы просто кнопка html под названием «положить в корзину», где пользователи могут помещать товары в корзину .. а затем на странице корзины вы даете пользователям возможность удалить выбранные элементы снова. теперь вы думаете о дальнейших шагах ..

1
doniyor 6 Янв 2016 в 08:14

В форме модели вы можете указать в мета-классе

class Meta:
    widgets = {
        'descr': CheckboxInput()
    }

Все равно что-то подобное. CheckboxInput находится в django.forms.widgets, я считаю

0
michaelwayman 6 Янв 2016 в 06:49