B
    JDb                 @   s4   d dl mZmZmZ d dlmZ G dd deZdS )    )IS_POPUP_VARTO_FIELD_VARIncorrectLookupParameters)InvalidPagec               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )
ChangeListc          
   C   s   || _ |j| _| j| _||| _|| _|| _d | _yt	|j
dd| _W n tk
rf   d| _Y nX yt	|j
dd| _W n( tk
r } z
d| _W d d }~X Y nX | || _| | | jjj| _d S )Npager   limit   )modelZ_metaZoptslookup_optsget_querysetroot_querysetlist_displaymodel_adminlist_select_relatedintZPOSTgetpage_num
ValueErrorlist_per_page	TypeErrorquerysetget_resultspkZattnameZ
pk_attname)selfrequestr
   r   r   e r   0G:\easytimepro\master/mysite/staff\views\main.py__init__   s$    
zChangeList.__init__c             C   s   | j || j| j}|j}|| jk}|s4| j }n,y|| jj}W n t	k
r^   t
Y nX || _| j | _|| _|| _|| _d S )N)r   Zget_paginatorr   r   countZ_cloner   r   Zobject_listr   r   result_countr   full_result_countresult_list
multi_page	paginator)r   r   r%   r!   r$   r#   r   r   r   r   "   s    

zChangeList.get_resultsc             C   s:   ddl m} | j}g }| jr(t|| }dd||d}|S )Nr   )yield_results )codemsgr    data)Zmysite.admin.admin_listr&   r"   r#   list)r   r&   totalZrowscontextr   r   r   get_json_result4   s    zChangeList.get_json_resultc             C   s4   g }| j jj}t|dd|d| h@ s0|d |S )Nr   z-pk-)r   r   namesetappend)r   r   r   orderingZpk_namer   r   r   get_orderingB   s
    

zChangeList.get_orderingc             C   s    | j }| ||}|j| }|S )N)r   r4   Zorder_by)r   r   qsr3   r   r   r   r   L   s    
zChangeList.get_querysetc             C   s(   | j dkr| S | j r$|j| j  S |S )u*   
        获取外键关联的值
        T)r   Zselect_related)r   r5   r   r   r   apply_select_relatedS   s
    
zChangeList.apply_select_relatedN)	__name__
__module____qualname__r   r   r.   r4   r   r6   r   r   r   r   r      s   
r   N)Zdjango.contrib.admin.optionsr   r   r   Zdjango.core.paginatorr   objectr   r   r   r   r   <module>   s   