我是一个正在学习江戈的学生。我想把所有的value_code本身作为一个getlist,但是它不起作用。我怎么才能把它列在getlist上呢?我想要一个request.POST.getlist,但我不知道如何使用表单获得它。我该怎么修改它?我非常感谢你的帮助。
错误:
TypeError at /join/join_create/1/
'method' object is not subscriptable
Request Method: POST
Request URL: http://127.0.0.1:8000/join/join_create/1/
Django Version: 3.1.5
Exception Type: TypeError
Exception Value:
'method' object is not subscriptable
Exception Location: C:\zeronine_project (5)\join\views.py, line 37, in join_create
Python Executable: D:\anaconda3\envs\vnv_zn\python.exe
Python Version: 3.7.6
Python Path:
['C:\\zeronine_project (5)',
'D:\\anaconda3\\envs\\vnv_zn\\python37.zip',
'D:\\anaconda3\\envs\\vnv_zn\\DLLs',
'D:\\anaconda3\\envs\\vnv_zn\\lib',
'D:\\anaconda3\\envs\\vnv_zn',
'D:\\anaconda3\\envs\\vnv_zn\\lib\\site-packages']
Server time: Fri, 13 Aug 2021 02:21:20 +0900
Traceback Switch to copy-and-paste view
D:\anaconda3\envs\vnv_zn\lib\site-packages\django\core\handlers\exception.py, line 47, in inner
response = get_response(request) …
▶ Local vars
D:\anaconda3\envs\vnv_zn\lib\site-packages\django\core\handlers\base.py, line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) …
▶ Local vars
C:\zeronine_project (5)\join\views.py, line 37, in join_create
element.value_code = request.POST.getlist['value_code'] …
▶ Local varsviews.py
if request.method == "POST":
form = ElementForm(request.POST)
if form.is_valid():
element = Element()
element.designated_code = Designated.objects.get(product_code=id)
element.value_code = request.POST.getlist['value_code']
element.save()
else:
element = Element()
element.designated_code = Designated.objects.get(product_code=id)
element.value_code = None
element.save()forms.py
class ElementForm(forms.Form):
value_code = forms.ModelChoiceField(error_messages={'required': "옵션을 선택하세요."}, label="옵션", queryset=Value.objects.all())html
<form method="POST" action="{% url 'zeronine:join_create' id=product.product_code %}">
<div class="form-group row" style="margin-top: -5px">
<label for="optionSelect" class="col-sm-6 col-form-label"><b>옵션</b></label>
<div class="col-sm-6" style="margin-left: -90px;">
<select type="text" class="form-control" name="value_code" id="optionSelect" value="{{ form.value_code }}">
<option value="none">옵션을 선택하세요.</option>
{% for option in option_object %}
{% if option.option_code.option_code.option_code == value.option_code %}
{%if option.product_code == product %}
<optgroup label="{{option.name}}">
{% for value in value_object %}
{% if value.option_code.option_code == option.option_code %}
{%if value.product_code == product %}
<option data-price="{{value.extra_cost}}"value="{{value.value_code}}" multiple='multiple'>{{value.name}} (+{{value.extra_cost}}원)</option>
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
</optgroup>
</select>发布于 2021-08-12 20:39:27
尝尝这个。
if request.method == "POST":
form = ElementForm(request.POST or None)
if form.is_valid():
form.instance.designated_code = Designated.objects.get(product_code=id)
form.instance.value_code = request.POST.getlist['value_code']
form.save()
else:
form.instance.designated_code = Designated.objects.get(product_code=id)
form.instance.value_code = None
form.save()发布于 2021-08-12 23:29:37
使用应该是.getlist('value_code')。由于您得到了一个列表,所以您需要检查将使用哪个元素。
例如,如果您希望使用第一项:
value_codes = request.POST.getlist('value_code')
element.value_code = value_codes[0] if value_codes else None但是,这仍然取决于您如何在请求中传递这一信息。
https://stackoverflow.com/questions/68761661
复制相似问题