AttributeError:“QuerySet”对象没有属性“标签”
Posted
技术标签:
【中文标题】AttributeError:“QuerySet”对象没有属性“标签”【英文标题】:AttributeError: 'QuerySet' object has no attribute 'tags' 【发布时间】:2020-03-25 02:36:34 【问题描述】:我的看法。此视图在 news.tags 中包含错误
class NewsDetailView(DetailView):
model = News
template_name='news/detail_news.html'
context_object_name= 'news'
def get_context_data(self, **kwargs):
news=News.objects.all()
tags=news.tags.all()
context = super().get_context_data(**kwargs)
context['comments'] = Comment.objects.filter(news=self.object)
context['my_likes'] = Like.objects.filter(news=self.object)
context['popular_news'] = news.order_by("-count")[:6]
context['tags'] = tags
# context["tags"] = TaggableManager().bulk_related_objects(self.object)
self.object.count = self.object.count + 1
self.object.save()
return context
这是我的模型。我创造了这个来制造新闻。我想在没有 TaggableManager() 的情况下在我的新闻中添加标签
class Tag(models.Model):
name = models.CharField(max_length=30)
class News(models.Model):
CATEGORY=(("0","Politics"),("1","Sports"),("2","Health"),("3","Business"),("4","International"),("5","Finance"))
title=models.CharField(max_length=250)
story= models.TextField()
count= models.IntegerField(default=0)
tags = models.ManyToManyField(Tag)
video_url = models.URLField(max_length=270, null=True) #makemigrations garna baki xa
category= models.CharField(choices=CATEGORY, max_length=2)
slug=models.SlugField(max_length=270,blank=True,null=True)
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
cover_image=models.ImageField(upload_to="uploads")
author= models.ForeignKey(User, on_delete=models.SET_NULL,null=True)
video_image = models.ImageField(null=True)
def get_absolute_url(self):
return reverse("detail_news",kwargs="category":self.get_category_display(), "pk":self.pk, "slug":self.slug)
【问题讨论】:
【参考方案1】:希望对您有所帮助:
def get_context_data(self, **kwargs):
news=News.objects.all()
tags=news.tags_set.all() <--edit
【讨论】:
首先,它应该是.tags.all()
而不是tags_set.all()
,因为模型有tags = models.ManyToManyField(Tag)
。接下来,您不能为 news
之类的查询集调用 news.tags.all()
。您只能为单个对象调用它。我们在DetailView
,因此您可以使用self.objects.tags.all()
。以上是关于AttributeError:“QuerySet”对象没有属性“标签”的主要内容,如果未能解决你的问题,请参考以下文章
Django QuerySet 对象没有属性'objects
Django 1.2 等价于 QuerySet.query.as_sql()
无法在没有 `.queryset` 属性或覆盖 `.get_queryset()` 方法的视图上应用 DjangoModelPermissions