首先,我使用了一个带def的detailslist,它工作正常,但是我想添加一个小部件以显示类似的帖子(同类别的帖子),因此我不得不将def更改为一个类,以放置def get_context_data( self,pk),但现在总是说et_context_data()得到了一个意外的关键字参数'object'
这是我的网址
url(r'^(?P<slug>[\w-]+)$', views.postdetails.as_view(), name="postdetails"),
我的观点
class postdetails(DetailView):
model = Post
template_name = 'blog/post.html'
def get_context_data(self,**kwargs):
context = super(postdetail, self).get_context_data(**kwargs)
cat_id = self.kwargs.get('pk', None)
category = get_object_or_404(Category, id=cat_id)
getcat = category.post_set.all().order_by("-date")
resultcat = random.sample(getcat,4)
context['similarpost'] = resultcat
return context
以及我的模型(如果需要)
class Post(models.Model):
title = models.CharField(max_length = 140, unique=True)
slug = models.SlugField(max_length=40, blank=True, unique=True)
image = models.ImageField(upload_to="media", blank=True)
body = RichTextField(config_name='default')
date = models.DateField()
category = models.ManyToManyField(Category)
def __str__(self):
return self.title
我将def get_context_data(self,pk):中的pk更改为** kwargs 但我没有定义名称'postdetail'
非常感谢