почему перезапись функции init форм заставляет поля формы возвращать none - PullRequest
1 голос
/ 30 апреля 2020

эй, я новичок в django, и мне нужна помощь, у меня есть форма с двумя полями, одно из которых - поле выбора, а атрибут choices получает свои данные из представлений, но проблема в том, что когда я вызываю форму, оба поля не возвращают ни одного вот мой forms.py

class AddToCardForm(forms.Form):
     quantity = forms.CharField(required=True,
                              widget=forms.TextInput(attrs={
                                  'class': 'form-control',
                                  'type': 'text',
                                  'name': 'quantity',
                                  'value': "1",
                                  'size': "2",
                                  'id': "input-quantity",
                              }))
     color = forms.ChoiceField(widget=forms.Select(attrs={
       'name': "color",
       'class': "form-control",
             }),
       required=True,)
     def __init__(self, user, *args, **kwargs):
          my_arg = kwargs.pop('choices', None)
          super(AddToCardForm, self).__init__(*args, **kwargs)
          self.fields['color'].widget.choices = my_arg

, а вот мой views.py

def ItemDetail(request, slug):
item = get_object_or_404(models.Item, slug=slug)
template_name = "core/test.html"
li = []
for i in item.color.all():
    tu = (i.color_name, i.get_color_name_display())
    li.append(tu)
form = forms.AddToCardForm(request.POST or None, choices=li) #
context = {
    'object': item,
    'form': form
}
if request.method == 'POST':
    print(form['color'].value())
    print(form['quantity'].value())
    if form.is_valid():
        color = form.cleaned_data.get('color')
        print(color)
        quantity = form.cleaned_data.get('quantity')
        print(quantity)
        add_to_cart_quantity(request, slug, int(quantity), color)
    else:
        print('form invalid')
        print(form.errors)
return render(request, template_name, context)

html шаблон

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="POST">{% csrf_token %}
{{ form.as_p }}
<button type="submit">submit</button>
</form>
</body>
</html>

, когда я устанавливаю атрибут choices в форме со stati c данными все работает нормально, но мне нужно установить выбор из моей модели, чтобы любая помощь была бы потрясающей, спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...