首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError at /newspaperapp/category/sports/ : Field 'id‘应为数字,但获取的是'sports’

ValueError at /newspaperapp/category/sports/ : Field 'id‘应为数字,但获取的是'sports’
EN

Stack Overflow用户
提问于 2021-01-30 14:38:51
回答 1查看 34关注 0票数 0

我正在为新闻创建分类。我正在尝试过滤新闻类别,但得到一个值错误models.py

代码语言:javascript
复制
class category(models.Model):
    title = models.CharField(max_length=199)
    category_image = models.ImageField(upload_to="imgs")

    def __str__(self):
        return self.title


class newsmodel_0(models.Model):
    category = models.ForeignKey(category, on_delete=models.CASCADE)
    title = models.CharField(max_length=49, null=False, blank=False)
    date_published = models.DateTimeField(auto_now_add=True)
    # details = models.TextField()
    details = RichTextUploadingField(blank=True, null=True)
    slug = models.SlugField(blank=True, unique=True)

    def slug(self):
        return slugify(self.date_published)

这是views.py

代码语言:javascript
复制
  def index(request):
    cats = category.objects.all()
    return render(request, 'newspaperapp/index.html', {'cats': cats})


class nowlist(ListView):
    model = newsmodel_1
    template_name = 'newspaperapp/index.html'


class newslist(DetailView):
    model = newsmodel_1
    template_name = 'newspaperapp/home.html'
    context_object_name = 'newspaperapp'


class SearchView(ListView):
    model = newsmodel_1
    template_name = 'newspaperapp/search.html'
    context_object_name = 'all_search_results'

    def get_queryset(self):
        result = super(SearchView, self).get_queryset()
        query = self.request.GET.get('search')
        # query is of type 'str', convert to datetime
        start_day = datetime.fromisoformat(query)
        end_day = start_day + timedelta(days=1)
        if query:
            postresult = newsmodel_1.objects.filter(
                date_published__gte=start_day,
                date_published__lt=end_day
            )
            result = postresult
        else:
            result = None
        return result


def full_news(request):
    return render(request, 'newspaperapp/full-news.html')


def CategoryView(request, cats):
    category_posts = newsmodel_1.objects.filter(category=cats)
    return render(request, "newspaperapp/categories.html", {'cats': cats, 'category_posts': category_posts})

这是urls.py

代码语言:javascript
复制
urlpatterns = [
  path('',views.index,name='index'),
  path('date/',nowlist.as_view(),name = "date"),
  path('<int:pk>',newslist.as_view(),name = "home"),
  path('results/', SearchView.as_view(), name='search'),
  path('full_news/',views.full_news,name = "full_news"),
  path('category/<str:cats>/',views.CategoryView,name='category'),
  ]

categories.html

代码语言:javascript
复制
<h1>{{cats}} category</h1>
<ul>
 {%for post in category_posts%}
   <h3><a href="{%url 'newspaperapp:index'  %}">{{ newspaperapp.title}} 
    {{newspaperapp.category}}</a></h3>
 {% endfor %}

index.html

代码语言:javascript
复制
{% for cat in cats %}
    <p class="card-text"><a href="category/{{cat.id}}" class="btn btn-sm btn-primary">{{cat.title}} 
     </a></p>
{% endfor %}

如果我使用#category_posts = newsmodel_1.objects.filter(category__name = cats),那么我会在/newspaperapp/category/sports/ Related Field got lookup: FieldError中得到一个错误

我已经更改了catogories.html中的代码,但它并没有显示体育新闻,而只是打印“体育类别”。

EN

回答 1

Stack Overflow用户

发布于 2021-01-30 14:56:31

在您的CategoryView中,而不是使用以下内容:

代码语言:javascript
复制
def CategoryView(request, cats):
    category_posts = newsmodel_1.objects.filter(category=cats)
    return render(request, "newspaperapp/categories.html", {'cats': cats, 'category_posts': category_posts})

试试这个:

代码语言:javascript
复制
def CategoryView(request, cats):
    cats = Category.objects.get(title=cats) # this will give the Category instance instead of string cats
    category_posts = newsmodel_1.objects.filter(category=cats)
    return render(request, "newspaperapp/categories.html", {'cats': cats, 'category_posts': category_posts})

我希望这对你有用。

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

https://stackoverflow.com/questions/65965328

复制
相关文章

相似问题

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