File: //usr/lib/python3/dist-packages/django/views/generic/__pycache__/detail.cpython-310.pyc
o
    ʎ�_k  �                   @   s�   d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ G dd� de
�Z
G dd	� d	e
e�ZG d
d� de�ZG dd
� d
ee�ZdS )�    )�ImproperlyConfigured)�models)�Http404)�gettext)�ContextMixin�TemplateResponseMixin�Viewc                       s^   e Zd ZdZdZdZdZdZdZdZ	dZ
ddd�Zdd	� Zd
d� Z
dd
� Z� fdd�Z�  ZS )�SingleObjectMixinzS
    Provide the ability to retrieve a single object for further manipulation.
    N�slug�pkFc                 C   s�   |du r| � � }| j�| j�}| j�| j�}|dur |j|d�}|dur9|du s+| jr9| �� }|jdi ||i��}|du rI|du rItd| j	j
 ��z|�� }W |S  |jjyf   t
td�d|jjji ��w )z�
        Return the object the view is displaying.
        Require `self.queryset` and a `pk` or `slug` argument in the URLconf.
        Subclasses can override this to return any object.
        N)r   zXGeneric detail view %s must be called with either an object pk or a slug in the URLconf.z,No %(verbose_name)s found matching the query�verbose_name� )�get_queryset�kwargs�get�pk_url_kwarg�slug_url_kwarg�filter�query_pk_and_slug�get_slug_field�AttributeError�	__class__�__name__�model�DoesNotExistr   �_�_metar   )�self�querysetr   r
   �
slug_field�objr
   r
   �=/usr/lib/python3/dist-packages/django/views/generic/detail.py�
get_object   s.   	��
���zSingleObjectMixin.get_objectc                 C   s:   | j du r| jr| jj�� S tdd| jji ��| j �� S )z�
        Return the `QuerySet` that will be used to look up the object.
        This method is called by the default implementation of get_object() and
        may not be called if get_object() is overridden.
        Nzj%(cls)s is missing a QuerySet. Define %(cls)s.model, %(cls)s.queryset, or override %(cls)s.get_queryset().�cls)r   r   �_default_manager�allr   r   r   �r   r
   r
   r!   r   :   s   
���
zSingleObjectMixin.get_querysetc                 C   s   | j S )z;Get the name of a slug field to be used to look up by slug.)r   r&