Сначала я использовал подробный список с определением def, которое работало нормально, но я хотел добавить виджет для отображения аналогичного поста (пост в той же категории), поэтому мне пришлось изменить свой def на класс, чтобы добавить def get_context_data ( self, pk), но теперь всегда говорят, что et_context_data () получил неожиданный аргумент ключевого слова 'object'
вот мой URL
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
Я изменил pk в def get_context_data (self, pk): на ** kwargs
но я получаю имя 'postdetail' не определено
большое спасибо