我是Django的新手,正在将PHP项目转换为Python等。
我正在尝试做一些超级简单的事情,但我不断收到以下错误:
AttributeError at /news/1/
'QuerySet' object has no attribute 'slug'
这是我大部分的模型来帮助解释:
class Article(models.Model):
title = models.CharField(max_length=200)
STATUS_CHOICES = ((1,'Published'), (2,'Hidden'), (3,'Draft'))
status = models.IntegerField(choices=STATUS_CHOICES,default=3)
pub_date = models.DateField('date published')
tags = TaggableManager()
header_width = models.IntegerField(default=1,blank=True,null=True)
header_height = models.IntegerField(default=1,blank=True,null=True)
header = models.ImageField(upload_to='news/',width_field='header_width',height_field='header_height',blank=True,null=True)
header_filter = models.BooleanField('Enable filter',default=1)
excerpt = HTMLField(blank=True)
body = HTMLField(blank=True)
custom_link_text = models.CharField(max_length=20,default="Read More")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
slug = AutoSlugField(unique=True,max_length=200,populate_from='db_slug',default="",slugify=return_value)
def __str__(self):
return self.title
我目前只是在测试以通过子弹,所以我的view方法目前看起来像这样:
def detail_redirect(request, pk):
a = Article.objects.all().filter(pk=pk)
return HttpResponse(a.slug)
# return redirect('news:detail',args=(a.slug,pk))
该方法的计划是将该方法重定向到我的应用程序中的另一个URL。它通过主键查询数据库并获取Slug,然后我将其传递给重定向快捷方式。
这似乎应该起作用,但事实并非如此。真令人沮丧。我查询的对象似乎返回确定。由于我的__str__方法,它返回标题。但是其他任何属性都会引发错误。可以与私有或受保护之类的可见性一起使用吗?
我希望这是一个简单的东西,我想念了。让我知道您是否需要更多代码/细节来帮助解释。
感谢您抽出宝贵的时间来查看我的问题。
filter
始终返回一个查询集,这是一个可能由许多项目组成的类似列表的对象。查询集不具有模型属性,只有其成员具有。您应该get
改用:
a = Article.objects.get(pk=pk)
(请注意all()
,无论使用哪种版本的代码,您都不需要。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句