4👍
If you check the implementation of get_context_name()
, you’ll see this:
def get_context_object_name(self, obj):
"""
Get the name to use for the object.
"""
if self.context_object_name:
return self.context_object_name
elif isinstance(obj, models.Model):
return obj._meta.model_name
else:
return None
And the implementation for get_context_data()
(from SingleObjectMixin
):
def get_context_data(self, **kwargs):
"""
Insert the single object into the context dict.
"""
context = {}
if self.object:
context['object'] = self.object
context_object_name = self.get_context_object_name(self.object)
if context_object_name:
context[context_object_name] = self.object
context.update(kwargs)
return super(SingleObjectMixin, self).get_context_data(**context)
So you can see that get_context_data()
adds to the dictionary an entry with the key context_object_name
(from get_context_object_name()
) which returns obj._meta.model_name
when self.context_object_name
isn’t defined. In this case, the view got self.object
as a consequence of the call to get()
which calls get_object()
. get_object()
takes the model that you’ve defined and automatically queries it from your database using the pk
you’ve defined in your urls.py
file.
http://ccbv.co.uk/ is a very good website for seeing all of the functions and attributes the class based views of Django has to offer in a single page.
0👍
This can be helpful where if context_object_name is not set, the context name will be constructed from the model_name of the model that the queryset is composed from