
    jF                       S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SKrS SKJr  S SKJr  S SKJr  S S	KJrJrJrJrJrJrJr  S S
KJrJrJrJrJrJ r   S SK!J"r"J#r#J$r$J%r%J&r&  S SK'J(r(  S SK)J*r*J+r+J,r,J-r-  S SK.J/r/  S SK0J1r1  S SK2J3r3  S SK4J5r5J6r6J7r7J8r8  S SK9J:r:  S SK;J<r<  S SK=J>r>  S SK?J@r@JArA  S SKBJCrCJDrDJErEJFrFJGrG  S SKHJIrIJJrJ  S SKKJLrL  S SKMJNrN  S SKOJPrPJQrQ  S SKRJSrT   " S S5      rU\U" 5       rVS rWS rX " S  S!\Y5      rZ " S" S#5      r[ " S$ S%5      r\ " S& S'5      r] " S( S)\I\ZS*9r^S0S+ jr_S, r`S- raS. rbS/\blc        g)1    N)defaultdict)partialmethod)chain)sync_to_async)apps)settings)checks)NON_FIELD_ERRORSFieldDoesNotExist
FieldErrorMultipleObjectsReturnedObjectDoesNotExistObjectNotUpdatedValidationError)DJANGO_VERSION_PICKLE_KEYDatabaseError
connectionconnectionsroutertransaction)NOT_PROVIDEDExpressionWrapperIntegerFieldMaxValue
LOOKUP_SEP)CASCADE
DO_NOTHING	CollectorDatabaseOnDelete)DatabaseDefault)	FETCH_ONE)CompositePrimaryKey)ForeignObjectRelOneToOneFieldlazy_related_operationresolve_relation)Coalesce)Manager)Options)FQ)class_prepared	post_init	post_savepre_initpre_save)
AltersDatamake_model_tuple)	force_str)make_hashable)capfirstget_text_list)gettext_lazyc                        \ rS rSrS rS rSrg)Deferred=   c                     gNz<Deferred field> selfs    M/var/www/html/KUNJ/venv/lib/python3.13/site-packages/django/db/models/base.py__repr__Deferred.__repr__>       !    c                     gr>   r?   r@   s    rB   __str__Deferred.__str__A   rE   rF   r?   N)__name__
__module____qualname____firstlineno__rC   rH   __static_attributes__r?   rF   rB   r;   r;   =   s    ""rF   r;   c                 D    [        U UUUR                  < SU < 3S.5      $ )z
Create exception subclass. Used by ModelBase below.

The exception is created in a way that allows it to be pickled, assuming
that the returned exception class will be added as an attribute to the
'attached_to' class.
.)rK   rL   )typerL   )namebasesmoduleattached_tos       rB   subclass_exceptionrV   H   s-      '2'?'?F	
 rF   c                 ^    [         R                  " U 5      (       + =(       a    [        U S5      $ )Ncontribute_to_class)inspectisclasshasattrvalues    rB   _has_contribute_to_classr^   Z   s!    u%%O'%9N*OOrF   c                   X   ^  \ rS rSrSrU 4S jrS rS r\S 5       r	\S 5       r
SrU =r$ )		ModelBase_   zMetaclass for all models.c                   > [         T'U ]  nU Vs/ s H  n[        U[        5      (       d  M  UPM     nnU(       d	  U" XX#5      $ UR	                  S5      nSU0n	UR	                  SS 5      n
U
b  XS'   UR	                  SS 5      n0 nUR                  5        H  u  p[        U5      (       a  XU'   M  XU'   M!     U" XX)40 UD6n[        USS5      nU=(       d    [        USS 5      n[        USS 5      nS n[        R                  " U5      n[        USS 5      c+  Uc  U(       d  [        SU< S	U< S
35      eOUR                  nUR                  S[        UU5      5        U(       Gd#  UR                  S[        S[        S U 5       5      =(       d    [         4UUS95        UR                  S[        S[        S U 5       5      =(       d    ["        4UUS95        UR                  S[        S[        S U 5       5      =(       d    [$        [&        4UUS95        U(       ai  UR(                  (       dX  [+        US5      (       d  UR,                  UR.                  l        [+        US5      (       d  UR0                  UR.                  l        UR.                  R2                  nU(       a5  U(       a.  UR4                  (       a  [7        U< SUR4                  < S35      eUR                  5        H  u  pUR                  X5        M     [9        UR.                  R:                  UR.                  R<                  UR.                  R>                  5      nU Vs1 s H  nUR@                  iM     nnU(       Ga	  S nU Vs/ s H  n[+        US5      (       d  M  UPM     sn H  nUR.                  R(                  (       a+  UR.                  RB                  (       a  [7        SU-  5      eMI  Uc  UnMP  UR.                  RD                  UR.                  RD                  Ld  M  [7        SU-  5      e   Uc  [7        SU-  5      eUR.                  RG                  U5        UR.                  RD                  UR.                  l"        OXR.                  l"        0 n[I        U/UQ5       H  n[+        US5      (       d  M  UU:w  a  UR.                  R(                  (       d  M9  UR.                  R:                   He  n[        U[J        5      (       d  M  URL                  RN                  (       d  M7  [Q        UURL                  RR                  5      nUU[U        U5      '   Mg     M     [W        5       nURY                  5        GH  nUU;  d  [+        US5      (       d  UR[                  UR\                  5        M8  UR.                  R:                  UR.                  R<                  -   n UR.                  R(                  (       Gd&  U  HZ  nUR@                  U;   a,  [_        SUR@                  < SU< SUR`                  < S	35      eURc                  UR@                  5        M\     UR.                  RD                  n[U        U5      n!U!U;   a  UU!   nOU(       dv  SUR.                  Rd                  -  n"[K        U[f        U"SSS9nU"U;   a"  [_        SU"< S U< S!UR`                  < S"35      e[+        UU"5      (       d  UR                  U"U5        OS nUUR.                  Rh                  U'   OUR.                  Rh                  Rk                  5       n#U  H  nUR@                  U;  d  M  UR@                  UR\                  ;  d  M1  UR@                  U;  d  MC  [j        Rl                  " U5      n$UR                  UR@                  U$5        URn                  (       d  M  U#R                  5        H  u  nn%UU%:X  d  M  U$U#U'   M     M     UR.                  Rh                  R[                  U#5        UR.                  R>                   H  nUR@                  U;   aI  UR.                  R(                  (       d,  [_        SUR@                  < SU< SUR`                  < S	35      eM\  UR@                  UR\                  ;  d  Mx  UR@                  U;  d  M  [j        Rl                  " U5      nUR.                  R(                  (       d  SUl8        UR                  UR@                  U5        M     GM     UR.                  Rr                   V&s/ s H  n&[j        Rl                  " U&5      PM     sn&UR.                  l9        U(       a  SUl        Xl:        U$ URw                  5         UR.                  R                  Ry                  UR.                  Rz                  U5        U$ s  snf s  snf s  snf s  sn&f )#NrK   __classcell__MetaabstractF_meta	app_labelzModel class rP   zU doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.DoesNotExistc              3      #    U  HA  n[        US 5      (       d  M  UR                  R                  (       a  M3  UR                  v   MC     g7frf   N)r[   rf   re   rh   .0xs     rB   	<genexpr>$ModelBase.__new__.<locals>.<genexpr>   s9      !(A"1g. '78ww7G7G '!(   AAA)rU   r   c              3      #    U  HA  n[        US 5      (       d  M  UR                  R                  (       a  M3  UR                  v   MC     g7frj   )r[   rf   re   r   rk   s     rB   rn   ro      s;      !(A"1g. 278ww7G7G 211!(rp   
NotUpdatedc              3      #    U  HA  n[        US 5      (       d  M  UR                  R                  (       a  M3  UR                  v   MC     g7frj   )r[   rf   re   rr   rk   s     rB   rn   ro      s9      !(A"1g. %78ww7G7G %!(rp   orderingget_latest_byz! cannot proxy the swapped model ''.zOAbstract base class containing model fields not permitted for proxy model '%s'.zAProxy model '%s' has more than one non-abstract model base class.z6Proxy model '%s' has no non-abstract model base class.zLocal field z
 in class z5 clashes with field of the same name from base class z%s_ptrT)	on_deleterR   auto_createdparent_linkzAuto-generated field 'z' in class z for parent_link to base class z. clashes with declared field of the same name.)>super__new__
isinstancer`   popitemsr^   getattrr   get_containing_app_configRuntimeErrorlabeladd_to_classr+   rV   tupler   r   r   r   re   r[   rt   rf   ru   proxyswapped	TypeErrorr   local_fieldslocal_many_to_manyprivate_fieldsrR   fieldsconcrete_modelsetup_proxyreversedr&   remote_fieldry   r(   modelr4   setmroupdate__dict__r   rJ   add
model_namer   parentscopydeepcopy
one_to_onemti_inheritedindexesrd   _prepareregister_modelrg   )(clsrR   rS   attrskwargs	super_newbr   rT   	new_attrs	classcell	attr_metacontributable_attrsobj_nameobj	new_classre   meta	base_metarg   
app_configis_proxy
new_fieldsffield_namesbaseklsparentparent_linksfieldrelatedinherited_attributesparent_fieldsbase_key	attr_namebase_parents	new_fieldry   idx	__class__s(                                          rB   r{   ModelBase.__new__b   si   GO	 $@ez!Y'?1e@S55 <(!6*	IIot4	 )2o&IIfd+	 !"[[]MH',,03H-&)(#	 +
 cDVD	9j%8<GIvt<Iw5		 33F;
4d+3!& .4T;    ',,	wi(@A"""" !(  -
 +, )
 "")"- !(  2
 01 )
 """  !(  9 )-8 )" !3!3 tZ00/8/A/AIOO,t_554=4K4KIOO1??(( 	i&7&7=A9CTCTU  1668MH""81 9 OO((OO..OO**


 (22z!qvvz2 D*1K'3WS'5J3'K<<((||**'>@DE 
 !<!D\\00

8Q8QQ#!#'(  L  |LtS  OO''--1ZZ-F-FIOO*-6OO* i2'23D4))y )<)<00e]338J8J8V8V8V.y%:L:L:R:RSG>CL!1'!:; 1 4  #uMMOD7"'$*@*@ %++DMM: JJ33djj6S6SSM::&&& +Ezz[0( !&

 $ $  -00< + zz00+D1|+(2E! (4::+@+@ @I)")&%)$(E !K/(
 !* $ $	 	 #9i88!..y%@ E05	''-#zz11668 +E

+5!JJi.@.@@!JJ.BB$(MM%$8	!..uzz9E !+++7C7I7I7K 3#(K#7;DL$8 8L +  ''..|< 22::,::..( !&

 $ $  / JJi&8&88

*>> MM%0E::...2+**5::u=' 3g $V +4//*A*A#
*A3DMM#*A#
	  "'I&N++IOO,E,EyQ An 3
 Lj#
s"   ggg;gg. gc                 `    [        U5      (       a  UR                  X5        g [        XU5        g N)r^   rX   setattr)r   rR   r]   s      rB   r   ModelBase.add_to_class  s%    #E**%%c0Cu%rF   c                    U R                   nUR                  U 5        UR                  (       a  [        U R                  SS9U l        [        U R                  SS9U l        UR                  R                  (       a2  UR                  nUR                  R                  n[        [        X5        U R                  c9  U R                  < SSR                  S UR                   5       5      < S3U l        [        R                   R#                  UR$                  5      nU(       a  ['        U S	U5        UR(                  (       d\  [+        S
 UR                   5       5      (       a  [-        SU R                  -  5      e[/        5       nSUl        U R3                  SU5        U R                   R4                   H'  nUR6                  (       a  M  UR9                  U 5        M)     [:        R<                  " U S9  g)z7Create some methods once self._meta has been populated.T)is_nextFN(, c              3   8   #    U  H  oR                   v   M     g 7fr   rR   rl   r   s     rB   rn   %ModelBase._prepare.<locals>.<genexpr>  s     6+Q&&+   )get_absolute_urlc              3   >   #    U  H  oR                   S :H  v   M     g7f)objectsNr   r   s     rB   rn   r     s     <166Y&s   zOModel %s must specify a custom Manager, because it has a field named 'objects'.r   )sender)rf   r   order_with_respect_tor   _get_next_or_previous_in_orderget_next_in_orderget_previous_in_orderr   r   r'   make_foreign_order_accessors__doc__rJ   joinr   r   ABSOLUTE_URL_OVERRIDESgetlabel_lowerr   managersany
ValueErrorr*   rx   r   r   rR   set_name_with_modelr.   send)r   optswrtremoteget_absolute_url_overridemanagerindexs          rB   r   ModelBase._prepare  s   yyc%%$122D%C! )622E)C% ))6600))//&'CSQ ;;		6$++66CK
 %-$C$C$G$G%
! %C+-FG}}<<<< -/2||<  iG#'G Y0
 YY&&E:::))#. ' 	3'rF   c                 .    U R                   R                  $ r   )rf   base_managerr   s    rB   _base_managerModelBase._base_manager  s    yy%%%rF   c                 .    U R                   R                  $ r   )rf   default_managerr   s    rB   _default_managerModelBase._default_manager  s    yy(((rF   r?   )rJ   rK   rL   rM   r   r{   r   r   propertyr   r   rN   rc   r   s   @rB   r`   r`   _   s@    #dL	&5(n & & ) )rF   r`   c                       \ rS rSrSS jrSrg)ModelStateFieldsCacheDescriptori  Nc                      Uc  U $ 0 =o1l         U$ r   )fields_cacherA   instancer   ress       rB   __get__'ModelStateFieldsCacheDescriptor.__get__  s    K&((#
rF   r?   r   rJ   rK   rL   rM   r   rN   r?   rF   rB   r   r         rF   r   c                       \ rS rSrSS jrSrg)ModelStateFetchModeDescriptori  Nc                 (    Uc  U $ [         =o1l        U$ r   )r#   
fetch_moder   s       rB   r   %ModelStateFetchModeDescriptor.__get__  s    K$--!
rF   r?   r   r   r?   rF   rB   r   r     r   rF   r   c                   L    \ rS rSrSrSrSr\" 5       r\	" 5       r
SrS rS rSrg)
ModelStatei  zStore model instance state.NTr?   c                 ^    U R                   R                  5       nUR                  SS 5        U$ )Npeers)r   r   r}   )rA   states     rB   __getstate__ModelState.__getstate__  s'    ""$		'4 rF   c                 8    U R                   R                  5         g r   )r   clearr@   s    rB   __del__ModelState.__del__  s    !rF   )rJ   rK   rL   rM   r   dbaddingr   r   r   r  r  r	  r  rN   r?   rF   rB   r  r    s0    %	B
 F24L.0JE"rF   r  c                   r  ^  \ rS rSrU 4S jr\SS.S j5       rS rS rS r	S	 r
S
 rS rS rSJS jrS r\" \\5      rSJS jrS rSKS jrSKS jrS rSSSSS.S jrS\l        SSSSS.S jrS\l        \S 5       r     SLS jrS\l         SJS jr      SMS jrS rS rS r SJS  jr!SNS! jr"S\"l        SNS" jr#S\#l        S# r$S$ r%S% r&SJS& jr'S' r(S( r)SJS) jr*SNS* jr+S+ r,S, r-S- r.S. r/S/ r0SJS0 jr1SOS1 jr2SJS2 jr3\S3 5       r4\S4 5       r5\S5 5       r6\S6 5       r7\S7 5       r8\S8 5       r9\S9 5       r:\S: 5       r;\S; 5       r<\S< 5       r=\S= 5       r>\S> 5       r?\S? 5       r@\S@ 5       rA\SA 5       rB\SB 5       rC\SC 5       rD\SD 5       rE\SE 5       rF\SF 5       rG\SG 5       rH\SH 5       rISIrJU =rK$ )PModeli  c                   > U R                   nU R                  n[        n[        nUR                  (       a  [        S5      e[        R                  " X1US9  [        5       U l	        [        U5      [        UR                  5      :  a  [        S5      eU(       dC  [        UR                  5      n[        X5       H  u  pXL a  M  U" X	R                  U5        M      O[        UR                   5      n[        X5       Hj  u  pXL a  M  U" X	R                  U5        UR#                  U	R$                  [&        5      [&        Ld  MG  [        UR(                   SU	R$                   S35      e   U H  n	Sn
U	R*                  b  U	R,                  (       a  M%  U(       a[  [/        U	R0                  [2        5      (       a   UR#                  U	R$                  5      nSn
O- UR#                  U	R                  5      nOU	R7                  5       nU
(       a  WULa  U" X	R$                  U5        M  M  WULd  M  U" X	R                  U5        M     U(       a  UR8                  nSnUR;                  5        H<  u  pX;   a  XLa  U" XU5        M  M   UR=                  U5        XLa  U" XU5        M<  M>     U(       a2  S	RA                  S
 U 5       5      n[        URB                   SU 35      e[D        TU ]  5         [H        R                  " X0S9  g ! [4         aB     UR#                  U	R                  5      n GN+! [4         a    U	R7                  5       n  GNIf = ff = f! [4         a    U	R7                  5       n GNnf = f! [>         a
    X4-  n GM  f = f)Nz'Abstract models cannot be instantiated.)r   argsr   z'Number of args exceeds number of fieldsz8() got both positional and keyword arguments for field 'rv   FTr?   r   c              3   8   #    U  H  n[        U5      v   M     g 7fr   repr)rl   ns     rB   rn   !Model.__init__.<locals>.<genexpr>a  s     ,IjT!WWjr   z%() got unexpected keyword arguments: )r   r   )%r   rf   r   DEFERREDre   r   r1   r   r  _statelenconcrete_fields
IndexErroriterzipattnamer   r}   rR   r   rL   column	generatedr|   r   r%   KeyErrorget_default_property_namesr~   	get_fieldr   r   rJ   rz   __init__r/   )rA   r  r   r   r   _setattr	_DEFERREDfields_itervalr   is_related_objectrel_objproperty_names
unexpectedpropr]   unexpected_namesr   s                    rB   r(  Model.__init__  s+   nnzz	==EFFSF; !l t9s4//00FGGt334K
 "$4
#}}c2 5 t{{+K!$4
#}}c2::ejj,7|K#++, -88=

|2G  5 !E %||#ue002BCC
6"(**UZZ"8,0)2$jj7 '') 
 )+T::w7 , i'T==#6O !R !11NJ%||~ )- U3 .8t, !1$T7 2  . #'99,Ij,I#I ||n$I'(*  	c1m $ 66 #)**U]]";C' 6"'"3"3"5C66 $ 2
 $//12@ - ."g-
.sN   9LMM6
ML//M	MMMM32M36N
	N
N)r  c                z   [        U5      [        U R                  R                  5      :w  aP  [        U5      nU R                  R                   Vs/ s H$  nUR                  U;   a  [        U5      O[        PM&     nnU " U6 nSUR                  l        XR                  l	        Ub  XGR                  l
        U$ s  snf NF)r  rf   r  r  r!  nextr  r  r  r  r  )r   r  r   valuesr  values_iterr   news           rB   from_dbModel.from_dbi  s    v;#cii7788v,K 222A &'YY+%=[!8K2   6l!



!$.JJ!
s   +B8c                 @    SU R                   R                  < SU < S3$ )N<z: >)r   rJ   r@   s    rB   rC   Model.__repr__x  s    !^^44d;;rF   c                 R    U R                   R                  < SU R                  < S3$ )Nz	 object (r   )r   rJ   pkr@   s    rB   rH   Model.__str__{  s    #'>>#:#:DGGDDrF   c                     [        U[        5      (       d  [        $ U R                  R                  UR                  R                  :w  a  gU R
                  nUc  XL $ X!R
                  :H  $ r5  )r|   r  NotImplementedrf   r   rA  )rA   othermy_pks      rB   __eq__Model.__eq__~  sW    %''!!::$$(B(BB==   rF   c                 l    U R                  5       (       d  [        S5      e[        U R                  5      $ )Nz8Model instances without primary key value are unhashable)
_is_pk_setr   hashrA  r@   s    rB   __hash__Model.__hash__  s)      VWWDGG}rF   c                     U R                  5       n[        R                  U[        '   U R                  R
                  U R                  R                  4n[        U4U4$ r   )r	  django__version__r   rf   rg   object_namemodel_unpickle)rA   dataclass_ids      rB   
__reduce__Model.__reduce__  sN      "*0*<*<&'::'')?)??{D00rF   c                    U R                   R                  5       n[        R                  " US   5      US'   US   R                  R                  5       US   l        / nUR                  5        H8  u  p4[	        U[
        5      (       d  M  UR                  U[        U5      45        M:     U(       a   X!S'   U H  u  p4UR                  U5        M     U$ )z0Hook to allow choosing the attributes to pickle.r  _memoryview_attrs)	r   r   r   r~   r|   
memoryviewappendbytesr}   )rA   r  rX  attrr]   s        rB   r	  Model.__getstate__  s    ""$))E(O4h',X'C'C'H'H'Jh$  ;;=KD%,,!(($e)=> ) ):%&0		$  1rF   c                    UR                  [        5      nU(       aF  U[        R                  :w  a1  [        R
                  " SU< S[        R                  < S3[        SS9  O[        R
                  " S[        SS9  SU;   a'  UR                  S5       H  u  p4[        U5      X'   M     U R                  R                  U5        g )Nz(Pickled model instance's Django version z$ does not match the current version rP      )
stacklevelz9Pickled model instance's Django version is not specified.rX  )r   r   rO  rP  warningswarnRuntimeWarningr}   rY  r   r   )rA   r  pickled_versionr\  r]   s        rB   __setstate__Model.__setstate__  s    ))$=>&"4"44 '(:(:< #  MMK
 %'$yy)<=(/  >U#rF   c                 j    U=(       d    U R                   n[        XR                  R                  5      $ r   )rf   r   rA  r!  )rA   r   s     rB   _get_pk_valModel._get_pk_val  s#    !tzztWW__--rF   c                 4   U R                   R                  R                  5        HG  nU(       d  M  X R                   R                  :w  d  M'  [	        XR
                  R                  U5        MI     [	        X R                   R                  R                  U5      $ r   )rf   r   r7  rA  r   target_fieldr!  )rA   r]   ry   s      rB   _set_pk_valModel._set_pk_val  sd    ::--446K{{jjmm;66>>F 7 tZZ]]22E::rF   c                    ^ U R                  U5      nS mT" U5      =(       d,    [        U[        5      =(       a    [        U4S jU 5       5      (       + $ )Nc                 8    U S L =(       d    [        U [        5      $ r   )r|   r"   r\   s    rB   	_is_unset#Model._is_pk_set.<locals>._is_unset  s     6e_5rF   c              3   4   >#    U  H  nT" U5      v   M     g 7fr   r?   )rl   r   rp  s     rB   rn   #Model._is_pk_set.<locals>.<genexpr>  s     1O1)A,,   )rh  r|   r   r   )rA   r   pk_valrp  s      @rB   rJ  Model._is_pk_set  sL    !!$'	 f Q65)Oc1O1O.O
 	
rF   c                     U R                   R                   Vs1 s H+  nUR                  U R                  ;  d  M  UR                  iM-     sn$ s  snf )zE
Return a set containing names of deferred fields for this instance.
)rf   r  r!  r   )rA   r   s     rB   get_deferred_fieldsModel.get_deferred_fields  sI     ZZ//
/yy- AII/
 	
 
s
   AAc           	         Uc  0 U l         Oz[        U SS5      n[        U5      nUR                  5        H  nXT;   d  M
  XE	 UR	                  U5        M     U(       d  g[        S U 5       5      (       a  [        S[        -  5      eUc(  SU 0nU R                  R                  R                  XS9nOUb  UR                  U5      nUR                  U R                  S9nU R                  5       nUb  UR                  " U6 nOWU(       aP  UR                  " U R                   R"                   V	s1 s H!  n	U	R$                  U;  d  M  U	R$                  iM#     sn	6 nUR'                  5       n
U
R                  5       nU R                   R(                   H  nUR$                  U;   a  M  UR*                  (       a)  [-        XR$                  [        XR$                  5      5        UR.                  (       d  Mb  UR1                  U
5      (       a"  UR3                  XR5                  U
5      5        M  UR1                  U 5      (       d  M  UR7                  U 5        M     U R                   R8                   HA  nUb  UR:                  U;   d  M  UR1                  U 5      (       d  M0  UR7                  U 5        MC     U R                   R<                   HT  nUb  UR:                  U;   d  M  UR.                  (       d  M+  UR1                  U 5      (       d  MC  UR7                  U 5        MV     U
R>                  R@                  U R>                  l         gs  sn	f )	a  
Reload field values from the database.

By default, the reloading happens from the database this instance was
loaded from, or by the read router if this instance wasn't loaded from
any database. The using parameter will override the default.

Fields can be used to specify which fields to reload. The fields
should be an iterable of field attnames. If fields is None, then
all non-deferred fields are reloaded.

When fetching deferred fields for a single instance (the FETCH_ONE
fetch mode), the deferred loading uses this method.
N_prefetched_objects_cacher?   c              3   4   #    U  H  n[         U;   v   M     g 7fr   r   r   s     rB   rn   (Model.refresh_from_db.<locals>.<genexpr>  s     3Fq:?Fs   zRFound "%s" in fields argument. Relations and transforms are not allowed in fields.r   )hintsrA  )!r{  r   r   r   remover   r   r   r   r   
db_managerusingfilterrA  rx  onlyrf   r  r!  r   r   concreter   is_relation	is_cachedset_cached_valueget_cached_valuedelete_cached_valuerelated_objectsrR   r   r  r  )rA   r  r   from_querysetprefetched_objects_cacher   r~  db_instance_qsdeferred_fieldsr   db_instancenon_loaded_fieldsrels                rB   refresh_from_dbModel.refresh_from_db  s    >-/D*'.t5PRT'U$[F407MM%( ' 3F333 13=> 
  &E NN88CCECWM)//6M&---9 224+00&9N+00 "ZZ777yy7 AII7N %((*';;=ZZ&&E}} 11~~mmW[---PQ   ??;//**41G1G1TU__T**--d3 ' ::--C#((f"4#--:M:M''- .
 ZZ..E5::#7%%%OOD))))$/ / %++..Is   ,MMc                 R   #    [        U R                  5      " XUS9I S h  vN $  N7f)N)r  r   r  )r   r  )rA   r  r   r  s       rB   arefresh_from_dbModel.arefresh_from_db3  s,     "4#7#78m
 
 	
 
   '%'c                      U R                   R                  U5      n[        XR                  5      $ ! [         a    [        X5      s $ f = f)a  
Return the value of the field name for this instance. If the field is
a foreign key, return the id value instead of the object. If there's
no Field object with this name on the model, return the model
attribute's value.

Used to serialize a field's value (in the serializer, or form output,
for example). Normally, you would just access the attribute directly
and not use this method.
)rf   r'  r   r   r!  )rA   
field_namer   s      rB   serializable_valueModel.serializable_value8  sH    	-JJ((4E t]]++ ! 	-4,,	-s   2 A
	A
Fforce_insertforce_updater  update_fieldsc                    U R                  SS9  U=(       d    [        R                  " U R                  U S9nU(       a  U(       d  U(       a  [	        S5      eU R
                  R                   Vs1 s H<  nUR                  U R                  ;  d  M  UR                  SL d  M0  UR                  iM>     nnUb_  U(       d  g[        U5      nU R
                  R                  nUR                  U5      nU(       a  [	        SSR                  U5      -  5      eOU(       d  U(       a  X0R                  R                  :X  a  U R!                  5       (       a  [#        5       nU R
                  R$                  n	U R
                  R                   H8  n
X;  d  M
  ['        U
S	5      (       a  M  UR)                  U
R                  5        M:     UR                  U5      nU(       a  [        U5      nU R+                  UUUUS
9  gs  snf )a1  
Save the current instance. Override this in a subclass if you want to
control the saving process.

The 'force_insert' and 'force_update' parameters can be used to insist
that the "save" must be an SQL insert or update (or equivalent for
non-SQL backends), respectively. Normally, they should not be set.
save)operation_namer   z6Cannot force both insert and updating in model saving.FNzmThe following fields do not exist in this model, are m2m fields, primary keys, or are non-concrete fields: %sr   through)r  r  r  r  ) _prepare_related_fields_for_saver   db_for_writer   r   rf   r  r!  r   r#  	frozenset_non_pk_concrete_field_names
differencer   r  r  rJ  r   	pk_fieldsr[   r   	save_base)rA   r  r  r  r  r   deferred_non_generated_fieldsr   not_updatable_fieldsr  r   loaded_fieldss               rB   r  
Model.saveI  s   " 	--V-DK,,T^^dK\]UVV ZZ//)
/yy- 23++2F AII/ 	& )

 $ !%m4M**AAK#0#;#;K#H # Kii 456  $ -'!!%K

,,I33)'%2K2KOOEMM2 4 (223PQM )- 8%%'	 	 	
Q)
s   0G;G;#G;Tc                V   #    [        U R                  5      " UUUUS9I S h  vN $  N7f)Nr  )r   r  )rA   r  r  r  r  s        rB   asaveModel.asave  s3      #499-%%'	
 
 	
 
s    )')c                 *   USL a  gUSL a  U 4$ [        U[        5      (       d  [        S5      eU H^  n[        U[        5      (       d  [        SU< S35      e[	        X5      (       a  M:  [        SUR
                   SU R
                   S35      e   U$ )	NFr?   Tz%force_insert must be a bool or tuple.zInvalid force_insert member. z must be a model subclass.z must be a base of rP   )r|   r   r   r`   
issubclassrL   )r   r  members      rB   _validate_force_insertModel._validate_force_insert  s    5 46M,..CDD"Ffi003F:=WX  c**3F4G4G3H I"//03  # rF   c           	      f   U=(       d    [         R                  " U R                  U S9nU(       a  U(       d  U(       a   eUb	  U(       d   eU R                  =pgUR                  R                  (       a  UR                  R
                  nUR                  nUR                  (       d  [        R                  " UU UUUS9  UR                  (       a  [        R                  " USS9n	O[        R                  " US9n	U	   Sn
U(       d#  U R                  U5      nU R                  XdXR5      n
U R                  UUU=(       d    U
UUU5      nSSS5        X@R                   l        SU R                   l        UR                  (       d  [&        R                  " UU W(       + UUUS9  gg! , (       d  f       N`= f)a>  
Handle the parts of saving which should be done only once per save,
yet need to be done in raw saves, too. This includes some sanity
checks and signal sending.

The 'raw' argument is telling save_base not to save any parent
models and not to do any changes to the values before save. This
is used by fixture loading.
r  N)r   r   rawr  r  F)r  	savepoint)r  )r   r   createdr  r  r  )r   r  r   rf   r   r   rx   r2   r   r   r   atomicmark_for_rollback_on_errorr  _save_parents_save_tabler  r  r  r0   )rA   r  r  r  r  r  r   originr   context_managerparent_insertedupdateds               rB   r  Model.save_base  se   " K,,T^^dK lmEE$55~~%99??))**Cyy  MM+ <<)00uNO)DD5QO#O#::<H"&"4"4# &&/G " "   NN$+ !- _s   <AF""
F0c           
         UR                   nSnUc  0 nUR                  R                  5        GHN  u  pU	(       a}  [        XR                   R                  R
                  5      cS  [        X	R
                  5      b=  [        XR                   R                  R
                  [        X	R
                  5      5        UR                  U5      =n
cE  U R                  UUUUUS9nU R                  UUUU=(       d    [        X5      S9nU(       d  SnXU'   O	U
(       d  SnU	(       d  M  [        X	R
                  U R                  UR                   5      5        U	R                  U 5      (       d  GM=  U	R                  U 5        GMQ     U$ )z3Save all the parents of cls using values from self.F)r   r  r  r  updated_parents)r   r  r  r  T)rf   r   r~   r   rA  r!  r   r   r  r  r  rh  r  r  )rA   r   r  r  r  r  r   insertedr   r   parent_updatedr  r  s                rB   r  Model._save_parents  sO    yy" O!\\//1MF D,,//"9"9:BD--0<lloo55wt]]7ST"1"5"5f"==F"&"4"4"/!-$3 #5 # **"/!0!TJv4T	 +  #H*1'#ummT-=-=fll-KL ??4((--d3I 2J rF   c           
      
   UR                   nUR                  nUR                   V	s/ s H  n	X;  d  M
  U	R                  (       a  M  U	PM!     n
n	U(       a4  U
 V	s/ s H'  n	U	R                  U;   d  U	R
                  U;   d  M%  U	PM)     n
n	U R                  U5      (       dm  [        [        XR                  R
                  5      [        5      (       d;  UR                  R                  U 5      n[        XR                  R
                  U5        U R                  U5      nU(       d  U(       d  U(       a  [        S5      eSnU(       dL  U(       dE  U(       d>  U R                  R                  (       a#  [!        S UR                   5       5      (       a  SnU(       Ga  U(       Gd~  UR"                  R%                  U5      nU
 V	s/ s H4  n	U	SU(       a  [        X	R
                  5      OU	R'                  U S5      4PM6     nn	U=(       d    UnU R)                  U5      nUR                   V	s/ s H:  n	U	R                  (       d  M  U	R*                  R-                  U
5      (       d  M8  U	PM<     nn	U H@  u  nnnUb  UR                  U;   d  M  [/        US5      (       d  M/  UR1                  U5        MB     U R3                  UUUUUUU5      n[5        U5      =n(       a  U R7                  US   U5        O0U(       a  U R9                  S5      eU(       a  U R9                  S	5      eU(       Gd   UR:                  (       a  UR:                  nUR=                  U 5      nUR"                  R%                  U5      R>                  " S0 UD6RA                  [C        [E        [G        S
5      [I        S5      -   [K        5       S9[I        S5      5      S9S   U l&        UR                   V	s/ s H/  n	U	R                  (       a  M  U(       d  XRN                  Ld  M-  U	PM1     nn	[Q        URR                  5      n[T        U   RV                  RX                  nU H  nU(       a  [        U UR
                  5      OUR'                  U SS9n[/        US5      (       a  UU;  a  UR1                  U5        MZ  M\  URZ                  (       d  Mo  U(       a  Mx  U(       a  UURN                  L a  M  UR]                  U5        M     U R_                  UR"                  UUUU5      nU(       a  U R7                  US   U5        U$ s  sn	f s  sn	f s  sn	f s  sn	f s  sn	f )zX
Do the heavy-lifting involved in saving. Update or insert the data
for a single table.
z5Cannot force an update in save() with no primary key.Fc              3   n   #    U  H+  oR                  5       =(       d    UR                  5       v   M-     g 7fr   )has_defaulthas_db_defaultr   s     rB   rn   $Model._save_table.<locals>.<genexpr>X  s%     R>aMMO9q'7'7'99>s   35TNresolve_expressionr   z&Forced update did not affect any rows.z0Save with update_fields did not affect any rows._order   )output_field)_order__maxr  )r   r?   )0rf   r  local_concrete_fieldsr#  rR   r!  rJ  r|   r   rA  r"   get_pk_value_on_saver   r   r  r  allr   r  r2   rh  referenced_fieldsintersectionr[   rZ  
_do_updatebool_assign_returned_valuesrr   r   get_filter_kwargs_for_objectr  	aggregater)   r   r   r   r   r  
auto_fieldlistdb_returning_fieldsr   featurescan_return_columns_from_insertdb_returningr  
_do_insert)rA   r  r   r  r  r  r  r   r  r   non_pks_non_generatedru  pk_setr  base_qsr7  forced_updatereturning_fieldsr   _modelr]   resultsfilter_argsinsert_fieldsr  s                            rB   r  Model._save_table-  s    yyNN	 //!
/! *+++ / 	 !
  /%.A66]*aii=.H . " % t$$ZD''//*O.
 .
 WW11$7FD''//62&<=TUU   ""R4>>RRRL ,''--e4G / /A	 14WT99-!**T5:Q
 /   *9\M%%d+F 33 3AKK  ++889NO	 3    )/$vu!)UZZ=-Hg/O O %++E2	 )/
 oo G w-'w',,WQZ9IJoo&NOOooF  )) 22#@@F%%++E2V +)+Y$,- #Ha 8|~ "!H	%   $	%  333A{{ (.!??2J 3  
  $D$<$<=-8.h55 + '  D%--0$7 
 5"677$44(//6 5 &&&::#(@$++E2 ' oo!!5-9I3G ,,WQZ9IJu!
%8 `sF   	T+T+T+$T0T0;T5)T:T:$T:T?6T?T?c                 d   UR                  US9nU(       d  Uc  UR                  5       (       a  S/$ / $ U R                  R                  (       aR  U(       dK  UR                  5       (       d  / $ UR	                  XG5      =n	(       a  U	$ UR                  5       (       a  S/$ / $ UR	                  XG5      $ )z
Try to update the model. Return a list of updated fields if the model
was updated (if an update query was done and a matching row was
found in the DB).
r  r?   )r  existsrf   select_on_save_update)
rA   r  r  ru  r7  r  r  r  filteredr  s
             rB   r  Model._do_update  s     >>V>, (HOO,=,=tI::$$] ??$$	"**6DDwD#??,,B44"499rF   c                 *    UR                  U /UUUUS9$ )zs
Do an INSERT. If returning_fields is defined then this method should
return the newly created data for the model.
)r   r  r  r  )_insert)rA   r   r  r   r  r  s         rB   r  Model._do_insert  s+    
 F-  
 	
rF   c                     [        U5      n[        X5       H  u  pE[        XR                  U5        M     U H)  nU R                  R                  UR                  S 5        M+     g r   )r  r   r   r!  r   r}   )rA   returned_valuesr  returning_fields_iterr]   r   s         rB   r  Model._assign_returned_values  sR     $%5 6GLED--/ H +EMMemmT2 +rF   c                 ,   U R                   R                   GHG  nU(       a  X2;  a  M  UR                  (       d  M%  UR                  U 5      (       d  M=  [	        XR
                  S 5      nU(       d  M\  UR                  5       (       dS  UR                  R                  (       d  UR                  R                  U5        [        U< SUR
                  < S35      e[	        XR                  5      UR                  ;   a  [        XR
                  U5        [	        XCR                  R                  5      [	        XR                  5      :w  d  GM6  UR                  U 5        GMJ     U R                   R                   H  nU(       a  X2;  a  M  UR                  (       d  M$  UR                  U 5      (       d  M<  [!        US5      (       d  MO  UR#                  U S S9nU(       d  Mh  UR                  5       (       a  M  [        U SUR
                   S35      e   g )NzB() prohibited to prevent data loss due to unsaved related object 'rv   fk_field)default)rf   r  r  r  r   rR   rJ  r   multipler  r   r!  empty_valuesr   rk  r   r[   r  )rA   r  r   r   r   s        rB   r  &Model._prepare_related_fields_for_save  s   
 ZZ//E%-    U__T%:%:dJJ5 ~~'' --66**>>sC$2@%**N  T==1U5G5GG D**c2 3 2 2 : :;w--@  --d3A 0D ZZ..E%-!!!OOD))E:..,,T4,@3s~~//$)* +338::,bB  /rF   c                 Z   U R                  5       (       dE  [        U R                  R                  < SU R                  R                  R
                  < S35      eU=(       d    [        R                  " U R                  U S9n[        XS9nUR                  U /US9  UR                  5       $ )Nz% object can't be deleted because its z attribute is set to None.r  )r  r  )keep_parents)rJ  r   rf   rQ  rA  r!  r   r  r   r    collectdelete)rA   r  r  	collectors       rB   r  Model.delete,  s      "jj44djjmm6K6KM  K,,T^^dKE7	4&|<!!rF   c                 R   #    [        U R                  5      " UUS9I S h  vN $  N7f)N)r  r  )r   r  )rA   r  r  s      rB   adeleteModel.adelete9  s+     "4;;/%
 
 	
 
r  c                     [        XR                  5      n[        [        UR                  5      5      n[        UR                  [        U5      U5      SS9$ )NT)strings_only)r   r!  dictr6   flatchoicesr5   r   )rA   r   r]   choices_dicts       rB   _get_FIELD_displayModel._get_FIELD_displayA  sI    mm,M%*;*;<=]5159
 	
rF   c                    U R                  5       (       d  [        S5      eU(       a  SOSnU(       a  SOSn[        XR                  5      n[        R
                  " UR                  U4SU 3U R                  4/[        R                  S9n[        R
                  " XqR                   SU 3U4/[        R                  S9nU R                  R                  R                  U R                  R                  5      R                  " S0 UD6R                  U5      R!                  U< UR                  < 3S	U-  5      n US
   $ ! ["         a3    U R%                  SU R                  R&                  R(                  -  5      ef = f)Nz8get_next/get_previous cannot be used on unsaved objects.gtlt -pk__)	connector__z%spkr   z!%s matching query does not exist.r?   )rJ  r   r   r!  r-   createrR   rA  ANDORr   r   r  r  r  r  order_byr  rh   rf   rQ  )	rA   r   r   r   oporderparamqqss	            rB   _get_next_or_previous_by_FIELD$Model._get_next_or_previous_by_FIELDI  s=     WXXT$3mm,HHuzz5)d2$K+ABaeeTHHaZZL2$/78ADDINN++11$++..AV VAYXuzz2FUNC	 		a5L 	##3dnn6J6J6V6VV 	s   =E =E?c                 F   SU-  n[        X5      (       Gd  U(       a  SOSnU(       a  SOSnU R                  R                  nUR                  U 5      nU R                  R
                  R                  " S0 UD6R                  " S0 SU-  U R                  R
                  R                  S5      R                  " S0 U R                  R                  R                  U R                  0D60D6R                  U5      S S R                  5       n[        XU5        [        X5      $ )	Nz__%s_order_cacher  r  r  z-_orderz
_order__%sr  r?   )r[   rf   r   r  r   r   r  r7  rA  rR   r  r   r   r   )rA   r   	cachenamer  r   order_fieldr  r   s           rB   r   $Model._get_next_or_previous_in_order^  s   &0	t'' dB 'HYE**::K%BB4HK//66EE  %"nn==DDXNUU #zz}}11477; %!	%   DS)t''rF   c                 <  ^ ^ Tc
  [        5       mU=(       d    T R                  n0 n/ nUR                   GH:  nUR                  T;   a  M  UR                  (       aH  [        U4S jT R                  UR                  5       5       5      (       a  M\  UR                  U5        Mo  [        UR                  [        5      (       aC  XQR                  ;  a4  [        U 4S jUR                   5       5      n[        U5      S:X  a  US   nO*UR                   (       a  [#        T UR$                  5      nOM  U(       a  ['        US5      (       d  [)        Xe5      nXcUR                  '   XcUR$                  '   GM=     ST;  a#  [)        T R*                  UR*                  5      US'   U(       ar  UR-                  5        VVs0 s H  u  pv[/        U5      U_M     nnnU H>  n	[1        U	R                  R3                  U5      U	R4                  5      X9R                  '   M@     U$ s  snnf )Nc              3   4   >#    U  H  nUS    T;   v   M     g7f)r   Nr?   )rl   refexcludes     rB   rn   2Model._get_field_expression_map.<locals>.<genexpr>  s!      J Fg%Jrt  c              3   <   >#    U  H  n[        TU5      v   M     g 7fr   )r   )rl   
from_fieldrA   s     rB   rn   r.    s      @Q*GD*--@Qs   r  r   r  rA  )r   rf   r   rR   r#  r   _get_expr_references
expressionrZ  r|   r   r%   r  r   from_fieldsr  r  r   r!  r[   r   rA  r~   r,   r   replace_expressionsr  )
rA   r   r-  	field_mapgenerated_fieldsr   r]   rR   replacementsgenerated_fields
   ` `       rB   _get_field_expression_mapModel._get_field_expression_mapu  s   ?eG!tzz	&&EzzW$ #889I9IJ    ''.5--/?@@!;!;; @E@Q@Q  u:?!!HEemm4/C D De+$)ejj!',emm$7 '8 w#DGGTWW5IdO>Goo>OP>O{tAdGUN>OLP#32C#..BB<P#003	../ $4  Qs   7Hc                     U R                  5       (       d  [        SU -  5      e[        XR                  R	                  5       R
                  5      $ )Nz9Unsaved model instance %r cannot be used in an ORM query.)rJ  r   r   r   get_related_fieldr!  )rA   r   s     rB   prepare_database_saveModel.prepare_database_save  sF      KdR  t//AACKKLLrF   c                     g)a!  
Hook for doing any extra model-wide validation after clean() has been
called on every field by self.clean_fields. Any ValidationError raised
by this method will not be associated with a particular field; it will
have a special-case association with the field defined by
NON_FIELD_ERRORS.
Nr?   r@   s    rB   cleanModel.clean  s     	rF   c                    U R                  US9u  p#U R                  U5      nU R                  U5      nUR                  5        H&  u  pgUR	                  U/ 5      R                  U5        M(     U(       a  [        U5      eg)zP
Check unique constraints on the model and raise ValidationError if any
failed.
r-  N)_get_unique_checks_perform_unique_checks_perform_date_checksr~   
setdefaultextendr   )rA   r-  unique_checksdate_checkserrorsdate_errorskvs           rB   validate_uniqueModel.validate_unique  s    
 &*%<%<W%<%M",,];//<%%'DAa$++A. ( !&)) rF   c                 "  ^ Tc
  [        5       m/ nU R                  U R                  R                  4/n/ nU(       a#  U R                  U R                  R                  4/nU R                  R
                   H  nUR                  R                  (       a&  UR                  XfR                  R                  45        U(       d  MM  UR                  R                  (       d  Mj  UR                  XfR                  R                  45        M     U HF  u  pxU H;  n	[        U4S jU	 5       5      (       a  M  UR                  U[        U	5      45        M=     MH     U(       aV  U HP  u  pzU
 HE  n[        U4S jUR                   5       5      (       a  M)  UR                  X{R                  45        MG     MR     / nU R                  U R                  R                  4/nU R                  R
                   H)  nUR                  XfR                  R                  45        M+     U GHl  u  p~U GH_  nUR                  nUT;   a  M  [        U[        5      (       aG  [        S UR                   5       5      nTR                  U5      (       a  UR                  UU45        Mt  UR                  (       a  UR                  UU445        UR                   (       a/  UR                   T;  a  UR                  USUUR                   45        UR"                  (       a/  UR"                  T;  a  UR                  USUUR"                  45        UR$                  (       d  GM-  UR$                  T;  d  GM@  UR                  USUUR$                  45        GMb     GMo     X<4$ )aK  
Return a list of checks to perform. Since validate_unique() could be
called from a ModelForm, some fields may have been excluded; we can't
perform a unique check on a model that is missing fields involved
in that check. Fields that did not validate should also be excluded,
but they need to be passed in via the exclude argument.
c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r?   rl   rR   r-  s     rB   rn   +Model._get_unique_checks.<locals>.<genexpr>  s     =ut7?u   c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r?   rS  s     rB   rn   rT    s     M;L4w;LrU  c              3   8   #    U  H  oR                   v   M     g 7fr   r   rl   r   s     rB   rn   rT    s     !C(**(r   dateyearmonth)r   r   rf   unique_togethertotal_unique_constraintsall_parentsrZ  r   r   r   r   rR   r|   r$   
isdisjointuniqueunique_for_dateunique_for_yearunique_for_month)rA   r-  include_meta_constraintsrI  unique_togethersconstraintsparent_classmodel_classr\  checkmodel_constraints
constraintrJ  fields_with_classr   r   rR   namess    `                rB   rD  Model._get_unique_checks  s    ?eG!^^TZZ-G-GHI# NNDJJ,O,OPQK JJ22L!!11 ''!#5#5#E#EF ('L,>,>,W,W,W""!#5#5#N#NO 3 -=(K(=u===!((+uU|)DE ) -= $2=."3JM:;L;LMMM%,,k;L;L-MN #4 3> 
 #nndjj.E.EFG JJ22L$$l4F4F4S4S%TU 3 $5Kvv7?a!455!!C!((!CCE))%00%,,k5-AB88!((+w)?@$$):):')I&&VT1CTCT'UV$$):):')I&&VT1CTCT'UV%%%!*<*<G*K&&WdADVDV'WX!  $5$ ))rF   c                 p   0 nU GH  u  p40 nU H  nU R                   R                  U5      n[        XR                  5      nUb%  US:X  a!  [        R
                  R                  (       a  M]  XsR                   R                  ;   a  U R                  R                  (       d  M  X[        U5      '   M     [        U5      [        U5      :w  a  M  UR                  R                  " S0 UD6n	U R                  UR                   5      n
U R                  R                  (       d/  U R                  UR                   5      (       a  U	R!                  U
S9n	U	R#                  5       (       d  GMa  [        U5      S:X  a  US   nO[$        nUR'                  U/ 5      R)                  U R+                  X45      5        GM     U$ )Nr  r  r  r   r?   )rf   r'  r   r!  r   r  !interprets_empty_strings_as_nullsr  r  r  strr  r   r  rh  rJ  r-  r  r
   rG  rZ  unique_error_message)rA   rI  rK  rh  unique_checklookup_kwargsr  r   lookup_valuer#  model_class_pkkeys               rB   rE  Model._perform_unique_checks  sg   )6%K M*
JJ((4&tYY7' B&"++MM ))333DKK<N<N1=c*o. +  < C$66--44E}EB "--k.?.?@N;;%%$//+:K:K*L*LZZ>Z2yy{{|$)&q/C*C!!#r*11--kHQ *7X rF   c                 `   0 nU GH$  u  p4pV0 n[        X5      nUc  M  US:X  a7  UR                  USU-  '   UR                  USU-  '   UR                  USU-  '   O[        X5      Xv< SU< 3'   [        X5      Xu'   UR                  R
                  " S0 UD6n	U R                  R                  (       d.  U R                  5       (       a  U	R                  U R                  S9n	U	R                  5       (       d  M  UR                  U/ 5      R                  U R                  XEU5      5        GM'     U$ )NrY  z%s__dayz	%s__monthz%s__yearr  r  r?   )r   dayr[  rZ  r   r  r  r  rJ  r-  rA  r  rG  rZ  date_error_message)
rA   rJ  rK  rh  lookup_typer   
unique_forrt  rY  r#  s
             rB   rF  Model._perform_date_checks9  s   ;F7KeM 4,D|f$8<i*45:>**kJ679=j:56FMG*kBC $+4#7M --44E}EB ;;%%$//*;*;ZZ477Z+yy{{!!%,33++K
K1 <G6 rF   c                    U R                   nUR                  U5      n[        UR                  S   SU [	        UR
                  5      UU[	        UR
                  5      U[	        UR                  U5      R
                  5      S.S9$ )Nra  )r   r   r|  r   field_label
date_fielddate_field_labelmessagecodeparams)rf   r'  r   error_messagesr7   verbose_name)rA   r|  r  r}  r   r   s         rB   r{  Model.date_error_messageX  s|    zzz*(():;"&t'8'89*#'(:(:;($,T^^J-G-T-T$U
 	
rF   c                    UR                   nU U[        UR                  5      US.n[        U5      S:X  aD  UR	                  US   5      n[        UR                  5      US'   [        UR                  S   SUS9$ U Vs/ s H'  n[        UR	                  U5      R                  5      PM)     nn[        U[        S5      5      US'   [        [        S	5      S
US9$ s  snf )N)r   rh  r   rs  r  r   r  r`  r  andfield_labelsz9%(model_name)s with this %(field_labels)s already exists.r\  )	rf   r7   r  r  r'  r   r  r8   _)rA   rh  rs  r   r  r   r   r  s           rB   rr  Model.unique_error_messagei  s       &"4#4#45(	
 |!NN<?3E$,U-?-?$@F=!",,X6  COBNQ*778,   &3<5%JF>""UV& 	s   >.Cc                    U R                   U R                  R                  4/nU R                  R                   HF  nUR                  R                  (       d  M   UR	                  X"R                  R                  45        MH     U$ r   )r   rf   rf  r^  rZ  )rA   rf  rg  s      rB   get_constraintsModel.get_constraints  sh    

(>(>?@ JJ22L!!---""L2D2D2P2P#QR 3 rF   c           	         U R                  5       n[        R                  " U R                  U S9n0 nU H  u  pVU H  n UR	                  XPXS9  M     M!     U(       a  [        U5      eg ! [
         az  n[        USS 5      S:X  aM  [        UR                  5      S:X  a4  UR                  UR                  S   / 5      R                  U5         S nAM  UR                  U5      n S nAM  S nAff = f)Nr  )r-  r  r  r`  r  r   )r  r   r  r   validater   r   r  r   rG  rZ  update_error_dict)	rA   r-  rf  r  rK  rh  rj  rk  es	            rB   validate_constraintsModel.validate_constraints  s    **,##DNNTB.9*K/
	=''7'X 0 /: !&))  ' =640H<
 1 12a7))**;*;A*>CJJ1MM!"!4!4V!<=s   A**
C.4AC)C))C.c                    0 nUc  [        5       nO[        U5      n U R                  US9   U R	                  5         U(       a=  U H'  nU[
        :w  d  M  Xa;  d  M  UR                  U5        M)      U R                  US9  U(       a=  U H'  nU[
        :w  d  M  Xa;  d  M  UR                  U5        M)      U R                  US9  U(       a  [        U5      eg! [         a  nUR                  U5      n SnANSnAff = f! [         a  nUR                  U5      n SnANSnAff = f! [         a  nUR                  U5      n SnANSnAff = f! [         a  nUR                  U5      n SnANSnAff = f)z
Call clean_fields(), clean(), validate_unique(), and
validate_constraints() on the model. Raise a ValidationError for any
errors that occur.
NrC  )	r   clean_fieldsr   r  r@  r
   r   rO  r  )rA   r-  rO  r  rK  r  rR   s          rB   
full_cleanModel.full_clean  sZ    ?eG'lG	1g.	1JJL
 ++0CKK% 5$$W$5
  ++0CKK% 5))'): !&)) =  	1((0F	1  	1((0F	1 # 5,,V45 # 5,,V45s^   C D  2D( 6E 
C="C88C= 
D%
D  D%(
E2EE
E5E00E5c           	         Uc
  [        5       n0 nU R                  R                   H  nUR                  U;   d  UR                  (       a  M&  [        XR                  5      nUR                  (       a  XCR                  ;   a  M]  [        U[        5      (       a  Mt   [        XR                  UR                  X@5      5        M     U(       a  [        U5      eg! [         a#  nUR                  X#R                  '    SnAM  SnAff = f)zg
Clean all fields and raise a ValidationError containing a dict
of all validation errors if any occur.
N)r   rf   r   rR   r#  r   r!  blankr  r|   r"   r   r@  r   
error_list)rA   r-  rK  r   	raw_valuer  s         rB   r  Model.clean_fields  s    
 ?eG""Avv AKK  ii0Iww96)_55.ii)AB #  !&))  # .!"vv.s   %C
D!C??Dc                 N   / U R                  5       QU R                  5       QU R                  " S0 UD6QnU R                  R                  (       GdT  UR                  S5      =(       d    / nU/ U R                  " S0 UD6QU R                  5       QU R                  U5      QU R                  5       Q-  n/ U R                  5       QU R                  5       QU R                  5       QU R                  5       QU R                  5       Q7nUR                  U5        U(       d  UR                  U R!                  5       5        U/ U R#                  5       QU R%                  U5      QU R'                  5       QU R)                  U5      QU R+                  U5      QU R-                  5       Q-  nU$ )N	databasesr?   )_check_swappable_check_model_check_managersrf   r   r   _check_fields$_check_m2m_through_same_relationship_check_long_column_names_check_related_fields_check_id_field_check_field_name_clashes#_check_model_name_db_lookup_clashes3_check_property_name_related_field_accessor_clashes_check_single_primary_keyrH  _check_column_name_clashes_check_unique_together_check_indexes_check_ordering_check_constraints_check_db_table_comment_check_composite_pk)r   r   rK  r  clash_errorss        rB   ri  Model.check  s   
!!#

   *6*

 yy   

;/52I "",V,99; --i8 **,	 F$$&..0 88: HHJ	
 ..0L MM,'  c<<>? ++-##I. $$& ''	2	
 ,,Y7 ((* F rF   c           
      ~   / nU R                   nUR                  nUR                  (       d  [        U[        5      (       d  U$ [        [        5      nUR                   H  nS n UR                  U5      nU(       d  U< S3nO{UR                  (       d  U< S3nOcUR                  (       a  U< S3nOKUR                  (       a  U< S3nO3XrR                  ;  a  U< S3nOXGR                     R                  U5        U(       d  M  UR                  [        R                   " U< S3UU SS95        M     UR#                  5        Ha  u  p[%        U	5      S	:  d  M  U	tpZS
R'                  S U
 5       5      nUR                  [        R                   " U S3U SU< S3U SS95        Mc     U$ ! [         a    S n GNFf = f)Nz is not a valid field.z field has no column.z field may not set 'null=True'.z field is a generated field.z field is not a local field.z1 cannot be included in the composite primary key.zmodels.E042hintr   idr  r   c              3   8   #    U  H  n[        U5      v   M     g 7fr   r  rX  s     rB   rn   ,Model._check_composite_pk.<locals>.<genexpr>C  s     &EutE{{r   z and z are the same fields.)rf   rA  r   r|   r$   r   r  r   r'  r   r"  nullr#  r   rZ  r	   Errorr~   r  r   )r   rK  r   rA  seen_columnsr  r  r   r"  r   rest
duplicatess               rB   r  Model._check_composite_pk  s   yyWW::Z,?@@M"4(..JDz2 $'=>\\$'<=$'FG$'CD///$'CD\\*11*=tLL%. ) !(- )@ $0#5#5#7F;!#$/!
!YY&E&EE
LL%, '  *|5>ST(	 $8 S % s   $F,,F<;F<c           	      x   U R                   R                  (       d  / $ / nU H  n[        R                  " X05      (       d  M   [        U   nUR
                  R                  (       a  MF  SU R                   R                  ;   a  Mb  UR                  [        R                  " UR                   S3U SS95        M     U$ )Nsupports_commentsz8 does not support comments on tables (db_table_comment).zmodels.W046r   r  )rf   db_table_commentr   allow_migrate_modelr   r  r  required_db_featuresrZ  r	   Warningdisplay_name)r   r  rK  r  r   s        rB   r  Model._check_db_table_commentP  s    yy))IB--b66$RJ##555&#))*H*HHNN%223 45 6(	   rF   c                 "   / nU R                   R                  (       a-   [        R                  " U R                   R                  5        U$ U$ ! [         a?    UR                  [        R                  " SU R                   R                  -  SS95         U$ [         ap    U R                   R                  R                  S5      u  p#UR                  [        R                  " SU R                   R                  < SU< SU< S3SS95         U$ f = f)	z"Check if the swapped model exists.z-'%s' is not of the form 'app_label.app_name'.zmodels.E001r  rP   'z' references 'z0', which has not been installed, or is abstract.zmodels.E002)rf   r   r   	get_modelr   rZ  r	   r  	swappableLookupErrorsplit)r   rK  rg   r   s       rB   r  Model._check_swappableg  s     99syy001& v%  LLG))--.("   	(+		(9(9(?(?(D%	LL 99..	:G )	 	s   *A ADA5DDc                    / nU R                   R                  (       ag  U R                   R                  (       d  U R                   R                  (       a1  UR	                  [
        R                  " SU R                  -  SS95        U$ )Nz'Proxy model '%s' contains model fields.zmodels.E017r  )rf   r   r   r   rZ  r	   r  rJ   r   rK  s     rB   r  Model._check_model  sY    99??yy%%)E)ELLACLLP( rF   c                     / nU R                   R                   H$  nUR                  UR                  " S0 UD65        M&     U$ )zPerform all manager checks.r?   )rf   r   rH  ri  )r   r   rK  r   s       rB   r  Model._check_managers  s:     yy))GMM'--1&12 *rF   c                    / nU R                   R                   H$  nUR                  UR                  " S0 UD65        M&     U R                   R                   H&  nUR                  UR                  " SSU 0UD65        M(     U$ )zPerform all field checks.
from_modelr?   )rf   r   rH  ri  r   )r   r   rK  r   s       rB   r  Model._check_fields  sk     YY++EMM%++//0 ,YY11EMM%++???@ 2rF   c           	         / n/ nU R                   R                  nS U 5       nS U 5       nU H  nUR                  R                  U UR                  R                  UR                  R
                  4nXR;   aR  UR                  [        R                  " SUR                  R                  R                   R                  -  U SS95        M  UR                  U5        M     U$ )zD
Check if no relationship model is used by more than one m2m field.
c              3   |   #    U  H2  n[        UR                  R                  [        5      (       d  M.  Uv   M4     g 7fr   )r|   r   r   r`   r   s     rB   rn   =Model._check_m2m_through_same_relationship.<locals>.<genexpr>  s%     SVz!..2F2F	'R!!V   -<	<c              3   |   #    U  H2  n[        UR                  R                  [        5      (       d  M.  Uv   M4     g 7fr   )r|   r   r  r`   r   s     rB   rn   r    s%     UVz!..2H2H)'T!!Vr  zWThe model has two identical many-to-many relations through the intermediate model '%s'.zmodels.E003r  )
rf   r   r   r   r  through_fieldsrZ  r	   r  r   )r   rK  seen_intermediary_signaturesr   r   	signatures         rB   r  *Model._check_m2m_through_same_relationship  s     ')$-- TVS VVUA$$&&--	I 8LL?..0066<<=  ( -33I>% & rF   c                 `   U R                   R                   Vs/ s H1  oR                  S:X  d  M  XR                   R                  :w  d  M/  UPM3     nnU(       aO  US   R                  (       d;  U R                   R                  R                  S:X  a  [
        R                  " SU SS9/$ / $ s  snf )z%Check if `id` field is a primary key.r  r   zP'id' can only be used as a field name if the field also sets 'primary_key=True'.zmodels.E004r  )rf   r   rR   rA  primary_keyr	   r  )r   r   r   s      rB   r  Model._check_id_field  s     yy--
-!4AADUA- 	 
 &)//CIILL4E4E4M/$	  I
s   B+B+B+c                    / n0 nU R                   R                   H  nUR                   R                   H  nUR                  UR                  5      =(       d$    UR                  UR
                  5      =(       d    SnU(       ar  UR                  [        R                  " SUR                  < SUR                  R                   < SUR                  < SUR                  R                   < S3	U SS95        XBUR                  '   XBUR
                  '   M     M     U R                   R                   H9  nUR                   R                  5        H  nXB;  d  M
  XBUR                  '   M     M;     U R                   R                  R                  5        H  nU(       d  M  UR                  UR                  5      =(       d    SnU(       d  M9  UR                  [        R                  " SUR                   SUR                   SUR                  R                    S3U S	S95        M     U R                   R                   GH  nUR                  UR                  5      =(       d$    UR                  UR
                  5      =(       d    SnUR                  S
:H  =(       a.    U=(       a%    UR                  S
:H  =(       a    UR                  U :H  nU(       aa  U(       dZ  UR                  [        R                  " SUR                  < SUR                  < SUR                  R                   < S3US	S95        XBUR                  '   XBUR
                  '   GM     U$ )z2Forbid field shadowing in multi-table inheritance.NzThe field 'z' from parent model 'z' clashes with the field 'rv   zmodels.E005r  z' from model 'zmodels.E006r  )rf   r^  r   r   rR   r!  rZ  r	   r  r   
get_fieldsr   r7  )r   rK  used_fieldsr   r   clashry   id_conflicts           rB   r  Model._check_field_name_clashes  sw     ii++F\\..#/U;??1993MUQUMM  %zz5;;+<+<affaggmmU !$,	 '(AFF#)*AII& / ,( ii++F\\,,.'*+' / , 99,,335KOOK$4$45=EuLL%k&6&6%7 8!JJ<~ekk6G6G5HL(	 6 ''AOOAFF+Q{qyy/IQTE $V5VUZZ4-?VEKKSVDV  [LL./ffejj%++BSBSU(	 #$%&		"' (* rF   c           
         / n/ nU R                   R                   Hg  nUR                  nU(       a@  XA;   a;  UR                  [        R
                  " SUR                  < SU< S3SU SS95        MV  UR                  U5        Mi     U$ )NzField 'z' has column name 'z ' that is used by another field.z$Specify a 'db_column' for the field.zmodels.E007r  )rf   r   r"  rZ  r	   r  rR   )r   used_column_namesrK  r   column_names        rB   r   Model._check_column_name_clashes   s}     ''A((K {?LL,-FFKAC( "((5 (" rF   c                 2   / nU R                   nUR                  S5      (       d  UR                  S5      (       a*  UR                  [        R
                  " SU-  U SS95        U$ [        U;   a(  UR                  [        R
                  " SU-  U SS95        U$ )Nr  zgThe model name '%s' cannot start or end with an underscore as it collides with the query lookup syntax.zmodels.E023r  zbThe model name '%s' cannot contain double underscores as it collides with the query lookup syntax.zmodels.E024)rJ   
startswithendswithrZ  r	   r  r   )r   rK  r   s      rB   r  )Model._check_model_name_db_lookup_clashes:  s    \\
  %%)<)<S)A)AMMCEOP$	"  :%MM@BLM$	 rF   c           	          / nU R                   R                  nS U R                   R                  SS9 5       nU H2  nXB;   d  M
  UR                  [        R
                  " SU-  U SS95        M4     U$ )Nc              3   ~   #    U  H3  nUR                   (       d  M  UR                  c  M%  UR                  v   M5     g 7fr   )r  related_modelr!  r   s     rB   rn   LModel._check_property_name_related_field_accessor_clashes.<locals>.<genexpr>V  s0      #
9}} !" AII9s   ===Freversez8The property '%s' clashes with a related field accessor.zmodels.E025r  )rf   r&  _get_fieldsrZ  r	   r  )r   rK  r/  related_field_accessorsaccessors        rB   r  9Model._check_property_name_related_field_accessor_clashesR  s|    22#
YY**5*9#

 0H)LL$&./(	 0 rF   c                     / n[        S U R                  R                   5       5      S:  a%  UR                  [        R
                  " SU SS95        U$ )Nc              3   J   #    U  H  oR                   (       d  M  S v   M     g7f)r  N)r  r   s     rB   rn   2Model._check_single_primary_key.<locals>.<genexpr>j  s     B0QMMqq0s   #	#r  zBThe model cannot have more than one field with 'primary_key=True'.zmodels.E026r  )sumrf   r   rZ  r	   r  r  s     rB   r  Model._check_single_primary_keyg  sN    B#))00BBQFMM*$	 rF   c                    [        U R                  R                  [        [        45      (       d  [
        R                  " SU SS9/$ [        S U R                  R                   5       5      (       a  [
        R                  " SU SS9/$ / nU R                  R                   H$  nUR                  U R                  US5      5        M&     U$ )z,Check the value of "unique_together" option.z*'unique_together' must be a list or tuple.zmodels.E010r  c              3   X   #    U  H   n[        U[        [        45      (       + v   M"     g 7fr   )r|   r   r  )rl   r   s     rB   rn   /Model._check_unique_together.<locals>.<genexpr>  s(      
3 6E4=1113s   (*z7All 'unique_together' elements must be lists or tuples.zmodels.E011r\  )
r|   rf   r\  r   r  r	   r  r   rH  _check_local_fields)r   rK  r   s      rB   r  Model._check_unique_togetheru  s     #))33eT]CC@$   
))33
 
 

 M$  F))33c55f>OPQ 4MrF   c                     / nU Hf  n[         R                  " X05      (       d  M   [        U   nU R                  R                   H#  nUR                  UR                  X5      5        M%     Mh     U$ r   )r   r  r   rf   r   rH  ri  )r   r  rK  r  r   r   s         rB   r  Model._check_indexes  s^    B--b66$RJ**ekk#:; +	  rF   c                 l   SSK Jn  0 nU R                  R                  SS9 H2  nXTUR                  '   [        US5      (       d  M$  XTUR                  '   M4     / nU GH  n XG   n[        UR                  UR                  5      (       a4  UR                  [        R                  " SU< SU< SU< S	3U S
S95        Mb  [        XSR                  5      (       a3  UR                  [        R                  " U< SU< SU< S3U SS95        M  [        UR                  [        5      (       ab  XPR                  R                  ;  aI  [!        UR"                  5      S:  a0  UR                  [        R                  " U< SU< S3U SS95        GM0  XPR                  R$                  ;  aJ  UR                  [        R                  " SU< SU< SU R                  R&                  < S	3SU SS95        GM  GM     U$ ! [(         a3    UR                  [        R                  " SU< SU< S	3U SS95         GM  f = f)Nr   )modelsFr  r!  r  z' refers to a ManyToManyField 'z.', but ManyToManyFields are not permitted in 'rv   zmodels.E013r  z! refers to a CompositePrimaryKey z0, but CompositePrimaryKeys are not permitted in rP   zmodels.E048r  z refers to a ForeignObject zE with multiple 'from_fields', which is not supported for that option.zmodels.E049z' refers to field 'z' which is not local to model 'z4This issue may be caused by multi-table inheritance.zmodels.E016r  z#' refers to the nonexistent field 'zmodels.E012)	django.dbr  rf   r  rR   r[   r!  r|   r   ManyToManyRelrZ  r	   r  r$   r%   r  r  r3  r   rQ  r$  )r   r   optionr  forward_fields_mapr   rK  r  s           rB   r	  Model._check_local_fields  s   $  YY**5*9E-2uzz*ui((495==1 :
  J>*6 e00&2F2FGGMM !' * & !$,
  'A'ABBMM%j(I)n -,,2:Q8 !$, u113CDDYY%D%DDE--.2MM%j(CJ> R& & !$, ))"8"88MM'-z399;P;PR!W #, 9m !@ {  LL #&
  (
 
s   !G668H32H3c                    U R                   R                  (       a  [        R                  " SU SS9/$ U R                   R                  (       d  U R                   R
                  (       d  / $ [        U R                   R
                  [        [        45      (       d  [        R                  " SU SS9/$ / nU R                   R
                  nS U 5       nS U 5       n/ n/ nU H1  n[        U;   a  UR                  U5        M   UR                  U5        M3     UnU H  nU nSnUR                  [        5       Ht  n	 U	S	:X  a  UR                   R                  nOUR                   R                  U	5      nUR                  (       a%  UR                  S
   R                   R"                  nMr  SnMv     M     U Vs1 s H  oUS	:w  d  M
  UiM     nn/ n
U R                   n[-        [.        R0                  " S [/        UR2                  UR4                  5       5       5      5      nU
R7                  X,-
  5        U
 H+  nUR                  [        R                  " SU-  U SS95        M-     U$ ! [$        [&        4 a\    Ub$  UR)                  U	5      cB  UR+                  U	5      c,  UR                  [        R                  " SU-  U SS95         GM   GM   GM  f = fs  snf )zM
Check "ordering" option -- is it a list of strings and do all fields
exist?
z?'ordering' and 'order_with_respect_to' cannot be used together.zmodels.E021r  zQ'ordering' must be a tuple or list (even if you want to order by only one field).zmodels.E014c              3   d   #    U  H&  n[        U[        5      (       d  M  US :w  d  M"  Uv   M(     g7f)?N)r|   rq  r   s     rB   rn   (Model._check_ordering.<locals>.<genexpr>	  s#     GVz!S'9!a3h!!Vs   00	0c              3   B   #    U  H  oR                  S 5      v   M     g7f)r  N)removeprefixr   s     rB   rn   r  	  s     6v!..%%vs   NrA  zJ'ordering' refers to the nonexistent field, related field, or lookup '%s'.zmodels.E015c              3      #    U  HZ  nUR                   (       a  UR                  (       a  UR                  UR                  4OUR                  R                  5       4v   M\     g 7fr   )rx   r  rR   r!  r   related_query_namer   s     rB   rn   r  C	  sQ        BA NN1:: VVQYY'''44689 Bs   A"A$)rf   _ordering_clashr	   r  r   rt   r|   r  r   r   rZ  r  rA  r'  r  
path_infosto_optsr   r   AttributeErrorget_transform
get_lookupr   r   from_iterabler   r  rH  )r   rK  r   _fieldsrelated_fieldsr   r   _clsfldpartinvalid_fieldsr   valid_fieldsinvalid_fields                 rB   r  Model._check_ordering  s    99$$U$  99**#))2D2DI#)),,tUm<<'$	  ## HVG 7v6 AQ%%a(q!	 
  $EDCJ/t|"jjmm"jj2248"~~b199??# 0 $: $1VDy!V1  yy   t{{D,@,@A  	
 	f34+MMM-/<=$	 , [ *>: {))$/7CNN4<P<X"LL!ACH!I$'#0	  =Y7 2s&   :A,I#(I#6	KK#AKKc                    U(       d  / $ / nSnSnU Hw  n[         R                  " XP5      (       d  M   [        U   nUR                  R	                  5       nUb  UR
                  R                  (       a  Mc  Uc  UnUnMl  Xs:  d  Ms  UnUnMy     Uc  U$ U R                  R                   Hg  nUR                  b  M  UR                  =n	c  M#  [        U	5      U:  d  M4  UR                  [        R                  " SU	< SU< SU< S3SU SS95        Mi     U R                  R                   H  n[!        UR"                  R$                  [&        5      (       a  M.  UR"                  R$                  R                  R                   Hg  n
U
R                  b  M  U
R                  =nc  M#  [        U5      U:  d  M4  UR                  [        R                  " S	U< SU< SU< S3S
U SS95        Mi     M     U$ )z~
Check that any auto-generated column names are shorter than the limits
for each database in which the model will be created.
Nz.Autogenerated column name too long for field "z". Maximum length is "z" for database "z".z/Set the column name manually using 'db_column'.zmodels.E018r  z2Autogenerated column name too long for M2M field "z\Use 'through' to create a separate model for M2M and then set column_name using 'db_column'.zmodels.E019)r   r  r   opsmax_name_lengthr  truncates_namesrf   r   	db_columnr"  r  rZ  r	   r  r   r|   r   r  rq  )r   r  rK  allowed_lendb_aliasr  r   r/  r   r  m2mrel_names               rB   r  Model._check_long_column_namesZ	  s    I B--b66$RJ(nn<<>O&**=*=*M*M&"1K!H$2"1K!H   M''A #$%HH,[9${2LL 'X? O(	 (& --A!..00#66 ~~--33@@MM)%(ZZ/<H3MM  (h@!R !$,
 A .6 rF   c                 P   SnSnU R                   R                  5        H  nUR                  (       d  M  [        UR                  SS 5      =n(       d  M6  [        U[        5      (       a  SnOU[        :w  a  SnU(       d  Mc  U(       d  Ml  [        R                  " SU SS9/s  $    / $ )NFrw   TzbThe model cannot have related fields with both database-level and Python-level on_delete variants.zmodels.E050r  )
rf   r  r  r   r   r|   r!   r   r	   r  )r   has_db_varianthas_python_variantr  rw   s        rB   r  Model._check_related_fields	  s    "99'')C   %,S-=-={D%QQ	Qi)9::%)N*,)-&!>&8&8R #,	  *" 	rF   c              #   H  #    [        U[        5      (       a  UR                   Hp  n[        U[        5      (       a?  Uu  p4[        UR	                  [
        5      5      v   U R                  U5       S h  vN   MW  U R                  U5       S h  vN   Mr     g [        U[        5      (       a+  [        UR                  R	                  [
        5      5      v   g [        US5      (       a1  UR                  5        H  nU R                  U5       S h  vN   M     g g  N N N7f)Nget_source_expressions)r|   r-   childrenr   r  r   r1  r,   rR   r[   r<  )r   exprchildlookupr]   src_exprs         rB   r1  Model._get_expr_references	  s     dAeU++$)MFZ 899"77>>>"77>>> ' a  		
344T344 77933H=== : 5 ?>
 >s7   A2D"4D5D"DBD"D D"D" D"c                     / nU Hf  n[         R                  " X05      (       d  M   [        U   nU R                  R                   H#  nUR                  UR                  X5      5        M%     Mh     U$ r   )r   r  r   rf   rf  rH  ri  )r   r  rK  r  r   rk  s         rB   r  Model._check_constraints	  s`    B--b66$RJ!ii33
j..s?@ 4	  rF   )r  r{  r  r   )NNN)FFFNN)FNFFNNr5  )NTT)LrJ   rK   rL   rM   r(  classmethodr:  rC   rH   rG  rL  rU  r	  re  rh  rl  r   rA  rJ  rx  r  r  r  r  alters_datar  r  r  r  r  r  r  r  r  r  r
  r  r$  r   r9  r=  r@  rO  rD  rE  rF  r{  rr  r  r  r  r  ri  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r1  r  rN   rc   r   s   @rB   r  r    sb   q2f <@  <E!
1"$,.; 
+{	+B

R/h

,( D
L D
 
 E * DL !I HL-b IV&:P
34l	" F
 G
*(.,\M* B*H/b>
"@*(-*^*8 # #J 8 8t  ,  4 
 
     # #J  $ C CJ  2  .  (    :   L L\ j jX M M^  , > >  rF   r  )	metaclassc                    UR                   R                  nUR                  U 5      nUR                  R	                  U5      R
                  " S0 UD6R                  [        U5       VVs/ s H  u  pgU" XvS9PM     snnS/5        g s  snnf )N)rA  r  r  r?   )rf   r   get_forward_related_filterr   r  r  bulk_update	enumerate)rA   ordered_objid_listr  	order_wrtr  r   rA  s           rB   method_set_orderrO  	  sx    !!77I66t<K""5)00?;?KK;DW;MN;Mie	);MN	
Ns   *B
c                     UR                   R                  nUR                  U 5      nUR                   R                  R                  nUR
                  R                  " S0 UD6R                  USS9$ )NT)flatr?   )rf   r   rI  rA  rR   r   r  values_list)rA   rL  rN  r  pk_names        rB   method_get_orderrT  	  sd    !!77I66t<K""''G%%44@@t@TTrF   c                     [        USU R                  R                  5       -  [        [        U 5      5        [        USU R                  R                  5       -  [        [
        U 5      5        g )Nzget_%s_orderzset_%s_order)r   rJ   lowerr   rT  rO  )r   r  s     rB   r   r   	  sZ    --//&.
 --//&.rF   c                 z    [        U [        5      (       a  [        R                  " U 6 nOU nUR	                  U5      $ )z7Used to unpickle Model subclasses with deferred fields.)r|   r   r   r  r{   )model_idr   s     rB   rR  rR  
  s3    (E"") ==rF   Tr   )dr   rY   ra  collectionsr   	functoolsr   	itertoolsr   asgiref.syncr   rO  django.appsr   django.confr   django.corer	   django.core.exceptionsr
   r   r   r   r   r   r   r  r   r   r   r   r   r   django.db.modelsr   r   r   r   r   django.db.models.constantsr   django.db.models.deletionr   r   r    r!   django.db.models.expressionsr"   django.db.models.fetch_modesr#   !django.db.models.fields.compositer$   django.db.models.fields.relatedr%   r&   r'   r(   django.db.models.functionsr)   django.db.models.managerr*   django.db.models.optionsr+   django.db.models.queryr,   r-   django.db.models.signalsr.   r/   r0   r1   r2   django.db.models.utilsr3   r4   django.utils.encodingr5   django.utils.hashabler6   django.utils.textr7   r8   django.utils.translationr9   r  r;   r  rV   r^   rQ   r`   r   r   r  r  rO  rT  r   rR  __safe_for_unpickle__r?   rF   rB   <module>rs     s	      # #  &         W V 1 V V 8 2 A  0 , , '  @ + / 5 6" " :$P
l) l)^  " ".eJ) e^?U
$  (, $rF   