首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用django-select2 2表示表单的NoReverseMatch

使用django-select2 2表示表单的NoReverseMatch
EN

Stack Overflow用户
提问于 2018-02-28 07:36:04
回答 1查看 175关注 0票数 0

我有两个视图部分,一个是将字段保存到数据库中,另一个是自动完成字段。如何在html模板中同时使用它们?

第一视图:

代码语言:javascript
复制
def stock(request):
stocks_form=StocksForm(None)
if request.method == "POST":
    stocks_form =StocksForm(data=request.POST)
    if stocks_form.is_valid():
        instance=stocks_form.save()
        instance.user=request.user
        instance.save()
        messages.success(request,"Successful" ,extra_tags="savestock")
    else:
        messages.error(request, "Error!")

else:
    stocks_form=StocksForm()
return render(request,'BallbearingSite/stock.html',{'stocks_form':stocks_form})

第二视图:

代码语言:javascript
复制
class StocksAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        if not self.request.user.is_authenticated():
            return Stocks.objects.none()
        qs = Stocks.objects.all()
        if self.q:
            qs = qs.filter(name__istartswith=self.q)
        return qs

urls.py

代码语言:javascript
复制
url(r'^stock/$',views.stock,name='stock'),
url(r'^stock_autocomplete/$',views.StocksAutocomplete.as_view(create_field='name'),name='stock_autocomplete'),

项目urls.py:

代码语言:javascript
复制
urlpatterns = [
url(r'^$',views.index,name='index'),
url(r'^ajax_select/', include(ajax_select_urls)),
url(r'^admin/BallbearingSite/controlsite/$',views.sendemailview),
url(r'^admin/', include(admin.site.urls)),
url(r'^',include('BallbearingSite.urls', namespace='BallbearingSite')),
url(r'^logout/$',views.user_logout,name='logout'),
url(r'^login/$',views.user_login,name='login'),
url(r'^ckeditor/', include('ckeditor_uploader.urls')),
url('^', include('django.contrib.auth.urls')),
 ]

模板:

代码语言:javascript
复制
<form enctype="multipart/form-data" method="post" >
{% csrf_token %}

{{ stocks_form.as_p }}

<input id="savestocks" type="submit" name="" value="ثبت">
</form>

forms.py:

代码语言:javascript
复制
  class StocksForm(forms.ModelForm):
   class Meta():
    model=Stocks
    fields=('name','number','suffix','brand','comment','price')
    widgets = {
        'name': autocomplete.ModelSelect2(url='stock_autocomplete')
     }
    def clean_name(self):
     return self.cleaned_data['comment'].upper()

它有以下错误:

代码语言:javascript
复制
NoReverseMatch at /stock/

Reverse for 'stock_autocomplete' with arguments '()' and keyword arguments'{}' not found. 0 pattern(s) tried: []

它错误地突出了这些部分:

代码语言:javascript
复制
    {{ stocks_form.as_p }}

以及:

代码语言:javascript
复制
   return render(request,'BallbearingSite/stock.html',{'stocks_form':stocks_form})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-28 10:00:36

看起来您可能丢失了url中的命名空间。如果stock_autocomplete url位于BallbearingSite命名空间中,您可以这样做:

代码语言:javascript
复制
'name': autocomplete.ModelSelect2(url='BallbearingSite:stock_autocomplete')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49024212

复制
相关文章

相似问题

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