So, in conclusion, Lachlan, you would want to do something like: def get_context_data(self,**kwargs): > #Call the base implementation first to get a context > context = super(PersonDetailView, self).get_context_data(**kwargs) > #Add in a querysets > context['job_list'] = > Vacancy.complete.filter(person_id=self.kwargs[self.pk_url_kwarg]) > context['certificate_list'] = > Certificate.objects.filter(person_id=self.kwargs[self.pk_url_kwarg]) > context['claim_list'] = > Compensation.objects.filter(person_id=self.kwargs[self.pk_url_kwarg]) > return context
I have not tested this, but it gives you the idea. You'll want to filter the Vacancy, Certificate and Compensation objects by the person's ID. Good luck Tervitades/Regards Karl Sutt On Tue, Jul 31, 2012 at 12:07 PM, Per-Olof Åstrand <p.o.aastr...@gmail.com>wrote: > Hi, > > I just started to convert my small hobby-project into class-based views > and struggled with similar things (but with a ListView instead). > > The person object is in the context dictionary, so you need to refer to it > by context['person']. > > More generally, it is instructive to print context, kwargs and self.kwargs > inside the get_context_data method. That would give you the information you > need. It took me some time to realize that url-captured parameters are > available in self.kwargs. > > Per-Olof > > > On Tuesday, July 31, 2012 6:17:26 AM UTC+2, Lachlan Musicman wrote: >> >> Hola, >> >> I'm confused about adding extra content to a class based Generic View. >> I've read >> the docs at file:///home/datakid/src/**django-docs/topics/class-** >> based-views.html >> and have written the code accordingly. >> >> I have Person, Certificate, Job and Compensation objects. The last three >> all >> have an FK (or M2M) back to a (or some) Person(s). >> >> My DetailView subclass (which I've put in views.py - is there a better or >> more >> correct place for it?) >> >> class PersonDetailView(DetailView): >> context_object_name = "person" >> model = Person >> >> def get_context_data(self,****kwargs): >> #Call the base implementation first to get a context >> context = super(PersonDetailView, self).get_context_data(**** >> kwargs) >> #Add in a querysets >> context['job_list'] = Vacancy.complete.all() >> context['certificate_list'] = Certificate.objects.all() >> context['claim_list'] = Compensation.objects.all() >> return context >> >> But I don't want the full list of Vacancies, Certificates or Claims - I >> just >> want those that are linked to the person - how can I filter by these? >> I've tried >> .filter(self.get_id) >> .filter(self.request.get_id) >> .filter(self.person.get_id) >> .filter(self.request.person.**get_id) >> .filter(applicants__get_id__**exact=self.get_id) (in the case of >> Vacancy) etc >> >> How do I filter by the person object that is already in the context? >> I know the answer is simple - I should wait until tomorrow when my brain >> is >> fresher, but I want to finish this off tonight if possible. >> >> Of course, the other thing that I can't help but thinking is that at this >> point, the non-generic-view method of urls/views might be a simpler way to >> go. While Generic Views are quite versatile, is there a point at which >> they are considered to restricting? >> >> L. >> > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/django-users/-/6O_nqDwvAAEJ. > > To post to this group, send email to django-users@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.