首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“方法”对象不是可订阅的错误发生

“方法”对象不是可订阅的错误发生
EN

Stack Overflow用户
提问于 2021-08-12 17:10:35
回答 2查看 912关注 0票数 0

我是一个正在学习江戈的学生。我想把所有的value_code本身作为一个getlist,但是它不起作用。我怎么才能把它列在getlist上呢?我想要一个request.POST.getlist,但我不知道如何使用表单获得它。我该怎么修改它?我非常感谢你的帮助。

错误:

代码语言:javascript
复制
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 vars

views.py

代码语言:javascript
复制
        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

代码语言:javascript
复制
 class ElementForm(forms.Form):
    value_code = forms.ModelChoiceField(error_messages={'required': "옵션을 선택하세요."}, label="옵션", queryset=Value.objects.all())

html

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-12 20:39:27

尝尝这个。

代码语言:javascript
复制
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()
票数 0
EN

Stack Overflow用户

发布于 2021-08-12 23:29:37

使用应该是.getlist('value_code')。由于您得到了一个列表,所以您需要检查将使用哪个元素。

例如,如果您希望使用第一项:

代码语言:javascript
复制
value_codes = request.POST.getlist('value_code')
element.value_code = value_codes[0] if value_codes else None

但是,这仍然取决于您如何在请求中传递这一信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68761661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档