
    (phj                    Z   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	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  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(  S SK)J*r*J+r+  S SK,J-r-J.r.  S SK/J0r0J1r1J2r2J3r3  S SK4J5r5  S SK6J7r7  S SK8J9r9  S SK:J;r;J<r<  S SK=J>r>J?r?J@r@JArAJBrB  S SKCJDrDJErE  S SKFJGrG  S SKHJIrI  S SKJJKrKJLrL  S SKMJNrO   " S S5      rP\P" 5       rQS rRS rS " S S\T5      rU " S  S!5      rV " S" S#5      rW " S$ S%\D\US&9rXS,S' jrYS( rZS) r[S* r\S+\\l]        g)-    N)partialmethod)chain)sync_to_async)apps)settings)checks)NON_FIELD_ERRORSFieldDoesNotExist
FieldErrorMultipleObjectsReturnedObjectDoesNotExistValidationError)DJANGO_VERSION_PICKLE_KEYDatabaseError
connectionconnectionsroutertransaction)NOT_PROVIDEDExpressionWrapperIntegerFieldMaxValue
LOOKUP_SEP)CheckConstraintUniqueConstraint)CASCADE	Collector)DatabaseDefaultRawSQL)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    H/var/www/html/venv/lib/python3.13/site-packages/django/db/models/base.py__repr__Deferred.__repr__;       !    c                     gr;   r<   r=   s    r?   __str__Deferred.__str__>   rB   rC   r<   N)__name__
__module____qualname____firstlineno__r@   rE   __static_attributes__r<   rC   r?   r8   r8   :   s    ""rC   r8   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.
.)rH   rI   )typerI   )namebasesmoduleattached_tos       r?   subclass_exceptionrS   E   s-      '2'?'?F	
 rC   c                 ^    [         R                  " U 5      (       + =(       a    [        U S5      $ )Ncontribute_to_class)inspectisclasshasattr)values    r?   _has_contribute_to_classrZ   W   s!    u%%O'%9N*OOrC   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(       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(       ai  UR$                  (       dX  ['        US5      (       d  UR(                  UR*                  l        ['        US5      (       d  UR,                  UR*                  l        UR*                  R.                  nU(       a5  U(       a.  UR0                  (       a  [3        U< SUR0                  < S35      eUR                  5        H  u  pUR                  X5        M     [5        UR*                  R6                  UR*                  R8                  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*                  R>                  (       a  [3        SU-  5      eMI  Uc  UnMP  UR*                  R@                  UR*                  R@                  Ld  M  [3        SU-  5      e   Uc  [3        SU-  5      eUR*                  RC                  U5        UR*                  R@                  UR*                  l         OXR*                  l         0 n[E        U/U-   5       H  n['        US5      (       d  M  UU:w  a  UR*                  R$                  (       d  M9  UR*                  R6                   He  n[        U[F        5      (       d  M  URH                  RJ                  (       d  M7  [M        UURH                  RN                  5      nUU[Q        U5      '   Mg     M     [S        5       nURU                  5        GHo  nUU;  d  ['        US5      (       d  URW                  URX                  5        M8  UR*                  R6                  UR*                  R8                  -   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R_                  UR<                  5        M\     UR*                  R@                  n[Q        U5      n!U!U;   a  UU!   nOU(       dv  SUR*                  R`                  -  n"[G        U[b        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*                  Rd                  U'   OUR*                  Rd                  Rg                  5       n#U  H  nUR<                  U;  d  M  UR<                  URX                  ;  d  M1  UR<                  U;  d  MC  [f        Rh                  " U5      n$UR                  UR<                  U$5        URj                  (       d  M  U#R                  5        H  u  nn%UU%:X  d  M  U$U#U'   M     M     UR*                  Rd                  RW                  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\  [f        Rh                  " U5      nUR*                  R$                  (       d  SUl6        UR                  UR<                  U5        M     GMr     UR*                  Rn                   V&s/ s H  n&[f        Rh                  " U&5      PM     sn&UR*                  l7        U(       a  SUl        Xl8        U$ URs                  5         UR*                  R                  Ru                  UR*                  Rv                  U5        U$ s  snf s  snf s  snf s  sn&f )!NrH   __classcell__MetaabstractF_meta	app_labelzModel class rM   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rb   N)rX   rb   ra   rd   .0xs     r?   	<genexpr>$ModelBase.__new__.<locals>.<genexpr>   s9      !(A"1g. '78ww7G7G '!(   AAA)rR   r   c              3      #    U  HA  n[        US 5      (       d  M  UR                  R                  (       a  M3  UR                  v   MC     g7frf   )rX   rb   ra   r   rg   s     r?   rj   rk      s;      !(A"1g. 278ww7G7G 211!(rl   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_deleterO   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itemsrZ   getattrr   get_containing_app_configRuntimeErrorlabeladd_to_classr(   rS   tupler   r   ra   rX   rn   rb   ro   proxyswapped	TypeErrorr   local_fieldslocal_many_to_manyprivate_fieldsrO   fieldsconcrete_modelsetup_proxyreversedr#   remote_fieldrs   r%   modelr1   setmroupdate__dict__r   rG   add
model_namer   parentscopydeepcopy
one_to_onemti_inheritedindexesr`   _prepareregister_modelrc   )(clsrO   rP   attrskwargs	super_newbr   rQ   	new_attrs	classcell	attr_metacontributable_attrsobj_nameobj	new_classra   meta	base_metarc   
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_fieldrs   idx	__class__s(                                          r?   ru   ModelBase.__new___   s   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 )
 !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[7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::,::..( !&

 $ $  / !MM%0E::...2+**5::u=! 3g $P +4//*A*A#
*A3DMM#*A#
	  "'I&N++IOO,E,EyQW AL 3
 Ld#
s"   eee;ee e$c                 `    [        U5      (       a  UR                  X5        g [        XU5        g N)rZ   rU   setattr)r   rO   rY   s      r?   r}   ModelBase.add_to_classq  s%    #E**%%c0Cu%rC   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   rO   rh   r   s     r?   rj   %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     r?   rj   r     s     <166Y&s   zOModel %s must specify a custom Manager, because it has a field named 'objects'.r   )sender)rb   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__rG   joinr   r   ABSOLUTE_URL_OVERRIDESgetlabel_lowerr   managersany
ValueErrorr'   rr   r}   r   rO   set_name_with_modelr+   send)r   optswrtremoteget_absolute_url_overridemanagerindexs          r?   r   ModelBase._preparew  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'rC   c                 .    U R                   R                  $ r   )rb   base_managerr   s    r?   _base_managerModelBase._base_manager  s    yy%%%rC   c                 .    U R                   R                  $ r   )rb   default_managerr   s    r?   _default_managerModelBase._default_manager  s    yy(((rC   r<   )rG   rH   rI   rJ   r   ru   r}   r   propertyr   r   rK   r_   r   s   @r?   r\   r\   \   s@    #Pd&5(n & & ) )rC   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)r>   instancer   ress       r?   __get__'ModelStateFieldsCacheDescriptor.__get__  s    K&((#
rC   r<   r   )rG   rH   rI   rJ   r   rK   r<   rC   r?   r   r     s    rC   r   c                   .    \ rS rSrSrSrSr\" 5       rSr	g)
ModelStatei  zStore model instance state.NTr<   )
rG   rH   rI   rJ   r   dbaddingr   r   rK   r<   rC   r?   r   r     s    %	B
 F24LrC   r   c                   J  ^  \ rS rSrU 4S jr\S 5       rS rS rS r	S r
S rS	 rS
 rSDS jrS r\" \\5      rS rSES jrSES jrS r SFS jrS\l         SFS jrS\l        \S 5       r     SGS jrS\l         SDS jr      SHS jrS rS rSDS jrSIS jr S\ l        SIS jr!S\!l        S r"S r#S r$SDS  jr%S! r&S" r'SDS# jr(SIS$ jr)S% r*S& r+S' r,S( r-S) r.SDS* jr/SJS+ jr0SDS, jr1\S- 5       r2\S. 5       r3\S/ 5       r4\S0 5       r5\S1 5       r6\S2 5       r7\S3 5       r8\S4 5       r9\S5 5       r:\S6 5       r;\S7 5       r<\S8 5       r=\S9 5       r>\S: 5       r?\S; 5       r@\S< 5       rA\S= 5       rB\S> 5       rC\S? 5       rD\S@ 5       rE\SA 5       rF\SB 5       rGSCrHU =rI$ )K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                  U;  a  U	R*                  b  U	R,                  (       a  M5  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 'rp   FTr<   r   c              3   8   #    U  H  n[        U5      v   M     g 7fr   )repr)rh   ns     r?   rj   !Model.__init__.<locals>.<genexpr>6  s     ,IjT!WWjr   z%() got unexpected keyword arguments: )r   r   )%r   rb   r   DEFERREDra   r   r.   r   r   _statelenconcrete_fields
IndexErroriterzipattnamer   rw   rO   r   rI   column	generatedrv   r   r"   KeyErrorget_default_property_namesrx   	get_fieldr
   r   rG   rt   __init__r,   )r>   r   r   r   r   _setattr	_DEFERREDfields_itervalr   is_related_objectrel_objproperty_names
unexpectedproprY   unexpected_namesr   s                    r?   r  Model.__init__  s4   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 %}}F*u||/Cue002BCC	6"(**UZZ"8,0)2$jj7 '') 
 )+T::w7 , i'T==#6M !P !11NJ%||~ )- U3 .8t, !1$T7 2  . #'99,Ij,I#I ||n$I'(*  	c1k $ 66"(**U]]";C' 6"'"3"3"5C6	6 $ 2
 $//12@ - ."g-
.sN   	L(M%N
M"!L??MM"MM"%NNNNc                 T   [        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$ s  snf NF)
r  rb   r  r  r	  nextr  r  r   r   )r   r   r   valuesvalues_iterr   news          r?   from_dbModel.from_db>  s    v;#cii7788v,K 222A &'YY+%=[!8K2   6l!




s   +B%c                 @    SU R                   R                  < SU < S3$ )N<z: >)r   rG   r=   s    r?   r@   Model.__repr__K  s    !^^44d;;rC   c                 R    U R                   R                  < SU R                  < S3$ )Nz	 object (r   )r   rG   pkr=   s    r?   rE   Model.__str__N  s    #'>>#:#:DGGDDrC   c                     [        U[        5      (       d  [        $ U R                  R                  UR                  R                  :w  a  gU R
                  nUc  XL $ X!R
                  :H  $ r  )rv   r   NotImplementedrb   r   r)  )r>   othermy_pks      r?   __eq__Model.__eq__Q  sW    %''!!::$$(B(BB==   rC   c                 \    U R                   c  [        S5      e[        U R                   5      $ )Nz8Model instances without primary key value are unhashable)r)  r   hashr=   s    r?   __hash__Model.__hash__[  s%    77?VWWDGG}rC   c                     U R                  5       n[        R                  U[        '   U R                  R
                  U R                  R                  4n[        U4U4$ r   )__getstate__django__version__r   rb   rc   object_namemodel_unpickle)r>   dataclass_ids      r?   
__reduce__Model.__reduce__`  sN      "*0*<*<&'::'')?)??{D00rC   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   rx   rv   
memoryviewappendbytesrw   )r>   stater@  attrrY   s        r?   r6  Model.__getstate__f  s    ""$))E(O4h',X'C'C'H'H'Jh$  ;;=KD%,,!(($e)=> ) ):%&0		$  1rC   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 rM      )
stacklevelz9Pickled model instance's Django version is not specified.r@  )r   r   r7  r8  warningswarnRuntimeWarningrw   rA  r   r   )r>   rD  pickled_versionrE  rY   s        r?   __setstate__Model.__setstate__w  s    ))$=>&"4"44 '(:(:< #  MMK
 %'$yy)<=(/  >U#rC   c                 j    U=(       d    U R                   n[        XR                  R                  5      $ r   )rb   ry   r)  r	  )r>   r   s     r?   _get_pk_valModel._get_pk_val  s#    !tzztWW__--rC   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   )rb   r   r  r)  r   target_fieldr	  )r>   rY   rs   s      r?   _set_pk_valModel._set_pk_val  sd    ::--446K{{jjmm;66>>F 7 tZZ]]22E::rC   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.
)rb   r  r	  r   )r>   r   s     r?   get_deferred_fieldsModel.get_deferred_fields  sI     ZZ//
/yy- AII/
 	
 
s
   AAc           	      ^   Uc  0 U l         Oa[        U SS5      nU H  nXC;   d  M
  X4	 UR                  U5        M     U(       d  g[        S U 5       5      (       a  [	        S[
        -  5      eSU 0nU R                  R                  R                  XS9R                  U R                  S9nU R                  5       nUb  [        U5      nUR                  " U6 nOXU(       aQ  U R                  R                   Vs/ s H!  nUR                   U;  d  M  UR                   PM#     nnUR                  " U6 nUR#                  5       n	U	R                  5       n
U R                  R                   Hz  nUR                   U
;   a  M  [%        XR                   [        XR                   5      5        UR&                  (       d  MQ  UR)                  U 5      (       d  Mi  UR+                  U 5        M|     U R                  R,                   H,  nUR)                  U 5      (       d  M  UR+                  U 5        M.     U R                  R.                   H?  nUR&                  (       d  M  UR)                  U 5      (       d  M.  UR+                  U 5        MA     U	R0                  R2                  U R0                  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 accessing deferred fields of an instance, the deferred loading
of the field will call this method.
N_prefetched_objects_cacher<   c              3   4   #    U  H  n[         U;   v   M     g 7fr   r   r   s     r?   rj   (Model.refresh_from_db.<locals>.<genexpr>  s     3Fq:?Fs   zRFound "%s" in fields argument. Relations and transforms are not allowed in fields.r   )hintsr)  )r[  ry   remover   r   r   r   r   
db_managerfilterr)  rX  listonlyrb   r  r	  r   r   is_relation	is_cacheddelete_cached_valuerelated_objectsr   r  r   )r>   usingr   prefetched_objects_cacher   r^  db_instance_qsdeferred_fieldsr   db_instancenon_loaded_fieldss              r?   refresh_from_dbModel.refresh_from_db  sJ    >-/D*'.t5PRT'U$407MM%(   3F333 13=> 
 T"55@@ A 

&DGG&
 	
 224&\F+00&9N 333A99O3 		3  
 ,00&9N$((*';;=ZZ//E}} 11D--mm)LM   U__T%:%:))$/ 0 ZZ//Et$$))$/ 0
 ZZ..E   U__T%:%:))$/ / %++..9s   8J*J*c                 P   #    [        U R                  5      " XS9I S h  vN $  N7f)N)ri  r   )r   ro  )r>   ri  r   s      r?   arefresh_from_dbModel.arefresh_from_db  s!     "4#7#78uTTTTs   &$&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.
)rb   r  r
   ry   r	  )r>   
field_namer   s      r?   serializable_valueModel.serializable_value  sH    	-JJ((4E t]]++ ! 	-4,,	-s   2 A
	A
c                    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  [!        5       nU R
                  R                   HD  n	U	R"                  (       a  M  [%        U	S	5      (       a  M)  UR'                  U	R                  5        MF     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.FNz_The following fields do not exist in this model, are m2m fields, or are non-concrete fields: %sr   through)ri  force_insertforce_updateupdate_fields) _prepare_related_fields_for_saver   db_for_writer   r   rb   r  r	  r   r  	frozenset_non_pk_concrete_field_names
differencer   r  r   r   primary_keyrX   r   	save_base)r>   r}  r~  ri  r  r   deferred_non_generated_fieldsr   non_model_fieldsr   loaded_fieldss              r?   ry  
Model.save  s    	--V-DK,,T^^dK\]UVV ZZ//)
/yy- 23++2F AII/ 	& )

 $ !%m4M**AAK,77D =ii 012    -'%K33(((	1J1JOOEMM2 4 (223PQM )- 8%%'	 	 	
M)
s   0GG#GTc                 V   #    [        U R                  5      " UUUUS9I S h  vN $  N7f)N)r}  r~  ri  r  )r   ry  )r>   r}  r~  ri  r  s        r?   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 rM   )rv   r~   r   r\   
issubclassrI   )r   r}  members      r?   _validate_force_insertModel._validate_force_insertK  s    5 46M,..CDD"Ffi003F:=WX  c**3F4G4G3H I"//03  # rC   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   rawri  r  F)ri  	savepoint)ri  )r   r   createdr  r  ri  )r   r  r   rb   r   r   rr   r/   r   r   r   atomicmark_for_rollback_on_errorr  _save_parents_save_tabler  r   r   r-   )r>   r  r}  r~  ri  r  r   originr   context_managerparent_insertedupdateds               r?   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   ri  r  r}  updated_parents)r   ri  r  r}  T)rb   r   rx   ry   r)  r	  r   r   r  r  r  rQ  rf  rg  )r>   r   ri  r  r}  r  r   insertedr   r   parent_updatedr  r  s                r?   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 rC   c           
         UR                   nUR                   Vs/ s H+  nUR                  (       a  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      n
U
c;  UR                  R                  U 5      n
[        XR                  R
                  U
5        U
SLnU(       d  U(       d  U(       a  [        S5      eSnU(       d  U(       d  U R                  R                  (       ar  UR                  R                  (       a  UR                  R                  [        Ld8  UR                  R                  (       a  UR                  R                  [        La  SnU(       a  U(       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)                  XXXo5      nU(       a  U(       d  [+        S5      eU(       a  U(       d  [+        S5      eU(       GdN  UR,                  (       a  UR,                  nUR/                  U 5      nUR                   R#                  U5      R0                  " S0 UD6R3                  [5        [7        [9        S5      [;        S5      -   [=        5       S	9[;        S
5      5      S9S   U l        UR                   Vs/ s H/  nUR                  (       a  M  U(       d  XR@                  Ld  M-  UPM1     nnURB                  nU RE                  UR                   UUUU5      nU(       a0  [G        US
   U5       H  u  nn[        U UR
                  U5        M     U$ 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.
Nz5Cannot force an update in save() with no primary key.FTz&Forced update did not affect any rows.z0Save with update_fields did not affect any rows._order   )output_fieldr   )_order__maxr  r<   )$rb   local_concrete_fieldsr  r  rO   r	  rQ  r)  get_pk_value_on_saver   r   r  r   defaultr   
db_defaultr   ri  ry   r/   
_do_updater   r   get_filter_kwargs_for_objectrb  	aggregater&   r   r   r   r   r  
auto_fielddb_returning_fields
_do_insertr  )r>   r  r   r}  r~  ri  r  r   r   non_pks_non_generatedpk_valpk_setr  base_qsr  forced_updater   filter_argsr   returning_fieldsresultsrY   s                         r?   r  Model._save_table  s<    yy //!
/== )* / 	 !
  /%.A66]*aii=.H . " % !!$'>WW11$7FD''//62t#<=TUU  ""TWW__L%HGG&&477+=+=\+Q  L,''--e4G / /A	 14WT99-!**T5:Q
 /   *9\MooG G#$LMMW#$VWW)) 22#@@F%%++E2V +)+Y$,- #Ha 8|~ "!H	%   $	%  333A{{ (.!??2J 3  
  $77oo!!5&2BCG $'
4D$ELE5D%--7 %Fc!
%8Ds4   N,N,N,$N1N1;N6N;)N; N;c                 T   UR                  US9nU(       d  USL=(       d    UR                  5       $ U R                  R                  (       aI  U(       dB  UR                  5       =(       a+    UR	                  U5      S:  =(       d    UR                  5       $ UR	                  U5      S:  $ )z
Try to update the model. Return True if the model was updated (if an
update query was done and a matching row was found in the DB).
r_  Nr   )rb  existsrb   select_on_save_update)r>   r  ri  r  r  r  r  filtereds           r?   r  Model._do_update7  s    
 >>V>, !,A0AA::$$]! 	D !!&)A-B1B '!++rC   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  ri  r  )_insert)r>   r   ri  r   r  r  s         r?   r  Model._do_insertS  s+    
 F-  
 	
rC   c                    U R                   R                   GH?  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                  cS  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M.  UR                  U 5        GMB     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                  b  Mw  [        U SUR
                   S35      e   g )NzB() prohibited to prevent data loss due to unsaved related object 'rp   fk_field)r  )rb   r  re  rf  ry   rO   r)  r   multiplerg  r   r	  empty_valuesr   rT  r   rX   get_cached_value)r>   rz  r   r   r   s        r?   r  &Model._prepare_related_fields_for_save`  s   
 ZZ//E%-    U__T%:%:dJJ5 66> --66**>>sC$2@%**N  T==1U5G5GG D**c2 3 2 2 : :;w--@  --d3A 0D ZZ..E%-!!!OOD))E:..,,T4,@3366>$)* +338::,bB  /rC   c                 J   U R                   cE  [        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{  )ri  r  )keep_parents)r)  r   rb   r9  r	  r   r  r   r   collectdelete)r>   ri  r  	collectors       r?   r  Model.delete  s    77?"jj44djjmm6K6KM  K,,T^^dKE7	4&|<!!rC   c                 R   #    [        U R                  5      " UUS9I S h  vN $  N7f)N)ri  r  )r   r  )r>   ri  r  s      r?   adeleteModel.adelete  s+     "4;;/%
 
 	
 
s   '%'c                     [        XR                  5      n[        [        UR                  5      5      n[        UR                  [        U5      U5      SS9$ )NT)strings_only)ry   r	  dictr3   flatchoicesr2   r   )r>   r   rY   choices_dicts       r?   _get_FIELD_displayModel._get_FIELD_display  sI    mm,M%*;*;<=]5159
 	
rC   c                    U R                   (       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<   )r)  r   ry   r	  r*   createrO   ANDORr   r   ri  r  r   rb  order_byr  rd   rb   r9  )	r>   r   r   r   oporderparamqqss	            r?   _get_next_or_previous_by_FIELD$Model._get_next_or_previous_by_FIELD  s7   ww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   9D> >=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<   )rX   rb   r   r  r   r   rb  r  r)  rO   r  r   r   ry   )r>   r   	cachenamer  r  order_fieldr  r   s           r?   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''rC   c           
      x   Uc
  [        5       nU=(       d    U R                  nUR                   Vs0 s HR  nUR                  U;  d  M  UR                  (       a  M(  UR                  [        [        XR                  5      U5      _MT     nnSU;  a#  [        U R                  UR                  5      US'   U$ s  snf )Nr)  )	r   rb   r  rO   r  r   ry   r	  r)  )r>   r   excluder   	field_maps        r?   _get_field_value_mapModel._get_field_value_map  s    ?eG!tzz 33
3zz( C16 CEJJgdMM:EBB3 	 

 w#DGGTWW5IdO
s   B7	B7.B7c                     U R                   c  [        SU -  5      e[        XR                  R	                  5       R
                  5      $ )Nz9Unsaved model instance %r cannot be used in an ORM query.)r)  r   ry   r   get_related_fieldr	  )r>   r   s     r?   prepare_database_saveModel.prepare_database_save  sB    77?KdR  t//AACKKLLrC   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    r?   cleanModel.clean  s     	rC   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_checksrx   
setdefaultextendr   )r>   r  unique_checksdate_checkserrorsdate_errorskvs           r?   validate_uniqueModel.validate_unique  s    
 &*%<%<W%<%M",,];//<%%'DAa$++A. ( !&)) rC   c                 v  ^ 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                  5        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                  5        H)  nUR                  XfR                  R                  45        M+     U GH  u  p~U GH  nUR                  nUT;   a  M  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  M  UR                  T;  d  M  UR                  USUUR                  45        GM     GM     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<   rh   rO   r  s     r?   rj   +Model._get_unique_checks.<locals>.<genexpr>(  s     =ut7?u   c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r<   r  s     r?   rj   r  /  s     M;L4w;Lr  dateyearmonth)r   r   rb   unique_togethertotal_unique_constraintsget_parent_listrB  r   r~   r   r   rO   uniqueunique_for_dateunique_for_yearunique_for_month)r>   r  include_meta_constraintsr  unique_togethersconstraintsparent_classmodel_classr  checkmodel_constraints
constraintr  fields_with_classr   r   rO   s    `               r?   r  Model._get_unique_checks  s    ?eG!^^TZZ-G-GHI# NNDJJ,O,OPQK JJ668L!!11 ''!#5#5#E#EF ('L,>,>,W,W,W""!#5#5#N#NO 9 -=(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668L$$l4F4F4S4S%TU 9 $5Kvv7?88!((+w)?@$$):):')I&&VT1CTCT'UV$$):):')I&&VT1CTCT'UV%%%!*<*<G*K&&WdADVDV'WX  $5 ))rC   c                 &   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]  U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
b  U	R                  U
S9n	U	R!                  5       (       d  GM<  [        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<   )rb   r  ry   r	  r   features!interprets_empty_strings_as_nullsr  r  r   strr  r   rb  rQ  r  r  r	   r  rB  unique_error_message)r>   r  r  r"  unique_checklookup_kwargsru  r   lookup_valuer  model_class_pkkeys               r?   r  Model._perform_unique_checksK  sM   )6%K M*
JJ((4&tYY7' B&"++MM ==););1=c*o. +  < C$66--44E}EB "--k.?.?@N;;%%.*DZZ>Z2yy{{|$)&q/C*C!!#r*11--kHQ *7X rC   c                 P   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                  b  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$ )Nr  z%s__dayz	%s__monthz%s__yearr  r_  r<   )ry   dayr  r  r   rb  r  r   r)  r  r  r  rB  date_error_message)
r>   r  r  r"  lookup_typer   
unique_forr.  r  r  s
             r?   r  Model._perform_date_checks|  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 rC   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$ )Nr  )r   r   r6  r   field_label
date_fielddate_field_labelmessagecodeparams)rb   r  r   error_messagesr4   verbose_name)r>   r6  ru  r7  r   r   s         r?   r5  Model.date_error_message  s|    zzz*(():;"&t'8'89*#'(:(:;($,T^^J-G-T-T$U
 	
rC   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   r"  r   r-  r  r   r:  r  r=  andfield_labelsz9%(model_name)s with this %(field_labels)s already exists.r  )	rb   r4   rB  r  r  r   rA  r5   _)r>   r"  r-  r   r@  r   r   rF  s           r?   r,  Model.unique_error_message  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                  5        HF  nUR                  R                  (       d  M   UR	                  X"R                  R                  45        MH     U$ r   )r   rb   r   r  rB  )r>   r   r!  s      r?   get_constraintsModel.get_constraints  sk    

(>(>?@ JJ668L!!---""L2D2D2P2P#QR 9 rC   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  ri  r?  r  r  r   )rJ  r   r  r   validater   ry   r  r   r  rB  update_error_dict)	r>   r  r   ri  r  r"  r$  r%  es	            r?   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.
Nr   )	r   clean_fieldsr   rN  r  r	   r   r  rP  )r>   r  r  rP  r  rO  rO   s          r?   
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   rb   r   rO   r  ry   r	  blankr  rv   r    r   r  r   
error_list)r>   r  r  r   	raw_valuerO  s         r?   rS  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-  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#                  5       QU R%                  U5      QU R'                  5       QU R)                  U5      QU R+                  5       QU R-                  U5      Q-  nU$ )N	databasesr<   )_check_swappable_check_model_check_managersrb   r   r   _check_fields$_check_m2m_through_same_relationship_check_long_column_names_check_id_field_check_field_name_clashes#_check_model_name_db_lookup_clashes3_check_property_name_related_field_accessor_clashes_check_single_primary_keyr  _check_column_name_clashes_check_index_together_check_unique_together_check_indexes_check_ordering_check_constraints_check_default_pk_check_db_table_comment)r   r   r  r\  clash_errorss        r?   r#  Model.check2  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 rC   c                    U R                   R                  (       Gd/  U R                   R                  R                  (       Ga	  [	        U R                   R                  [
        5      (       a/  U R                   R                  R                  R                  (       d  [        R                  " S5      (       d  U R                   R                  (       a{  U R                   R                  R                  (       dV  [        R                  " S[        R                   S3SU R                   R                  R                  R                    S3U SS9/$ / $ )NDEFAULT_AUTO_FIELDzPAuto-created primary key used when not defining a primary key type, by default 'rp   z0Configure the DEFAULT_AUTO_FIELD setting or the zh.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.zmodels.W042hintr   id)rb   ra   r)  rr   rv   r#   r   rs   r   is_overriddenr   !_is_default_auto_field_overriddenr   Warningrs  r   rI   r   s    r?   rn  Model._check_default_pkX  s     		"""		))) 399<<77IILL--99**+?@@		$$II((JJ  334B8 K99//99FFG HNO
 $  	rC   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   rv  )rb   db_table_commentr   allow_migrate_modelr   r)  r|  required_db_featuresrB  r   ry  display_name)r   r\  r  r   r   s        r?   ro  Model._check_db_table_commentx  s    yy))IB--b66$RJ##555&#))*H*HHNN%223 45 6(	   rC   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rv  rM   'z' references 'z0', which has not been installed, or is abstract.zmodels.E002)rb   r   r   	get_modelr   rB  r   Error	swappableLookupErrorsplit)r   r  rc   r   s       r?   r]  Model._check_swappable  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  )rb   r   r   r   rB  r   r  rG   r   r  s     r?   r^  Model._check_model  sY    99??yy%%)E)ELLACLLP( rC   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<   )rb   r   r  r#  )r   r   r  r   s       r?   r_  Model._check_managers  s:     yy))GMM'--1&12 *rC   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<   )rb   r   r  r#  r   )r   r   r  r   s       r?   r`  Model._check_fields  sk     YY++EMM%++//0 ,YY11EMM%++???@ 2rC   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$ )zBCheck 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   )rv   r   r   r\   r   s     r?   rj   =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   )rv   r   r|  r\   r   s     r?   rj   r    s%     UVz!..2H2H)'T!!Vr  zWThe model has two identical many-to-many relations through the intermediate model '%s'.zmodels.E003r}  )
rb   r   r   r   r|  through_fieldsrB  r   r  r|   )r   r  seen_intermediary_signaturesr   r   	signatures         r?   ra  *Model._check_m2m_through_same_relationship  s     ')$-- TVS VVUA$$&&--	I 8LL?..0066<<=  ( -33I>% & rC   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.rv  r   zP'id' can only be used as a field name if the field also sets 'primary_key=True'.zmodels.E004r}  )rb   r   rO   r)  r  r   r  )r   r   r   s      r?   rc  Model._check_id_field  s     yy--
-!4AADUA- 	 
 &)//CIILL4E4E4M/$	  I
s   B+B+B+c                    / n0 nU R                   R                  5        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                  5        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 'rp   zmodels.E005r}  z' from model 'zmodels.E006rv  )rb   r  r   r   rO   r	  rB  r   r  r   
get_fieldsr   r  )r   r  used_fieldsr   r   clashrs   id_conflicts           r?   rd  Model._check_field_name_clashes   s}     ii//1F\\..#/U;??1993MUQUMM  %zz5;;+<+<affaggmmU !$,	 '(AFF#)*AII& / 2( ii//1F\\,,.'*+' / 2 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(	 #$%&		"' (* rC   c           
         / n/ nU R                   R                   Hm  nUR                  5       u  pEU(       a@  XQ;   a;  UR                  [        R
                  " SUR                  < SU< S3SU SS95        M\  UR                  U5        Mo     U$ )NzField 'z' has column name 'z ' that is used by another field.z$Specify a 'db_column' for the field.zmodels.E007rt  )rb   r   get_attname_columnrB  r   r  rO   )r   used_column_namesr  r   rG  column_names         r?   rh   Model._check_column_name_clashesF  s     ''A113NA {?LL,-FFKAC( "((5 (" rC   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$ )NrG  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)rG   
startswithendswithrB  r   r  r   )r   r  r   s      r?   re  )Model._check_model_name_db_lookup_clashes_  s    \\
  %%)<)<S)A)AMMCEOP$	"  :%MM@BLM$	 rC   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  H7  nUR                   (       d  M  UR                  c  M%  UR                  5       v   M9     g 7fr   )re  related_modelget_attnamer   s     r?   rj   LModel._check_property_name_related_field_accessor_clashes.<locals>.<genexpr>{  s4      #
9}} !" AMMOO9s   AAAFreversez8The property '%s' clashes with a related field accessor.zmodels.E025r}  )rb   r  _get_fieldsrB  r   r  )r   r  r  related_field_accessorsaccessors        r?   rf  9Model._check_property_name_related_field_accessor_clashesw  s|    22#
YY**5*9#

 0H)LL$&./(	 0 rC   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     r?   rj   2Model._check_single_primary_key.<locals>.<genexpr>  s     B0QMMqq0s   #	#r  zBThe model cannot have more than one field with 'primary_key=True'.zmodels.E026r}  )sumrb   r   rB  r   r  r  s     r?   rg  Model._check_single_primary_key  sN    B#))00BBQFMM*$	 rC   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 "index_together" option.z)'index_together' must be a list or tuple.zmodels.E008r}  c              3   X   #    U  H   n[        U[        [        45      (       + v   M"     g 7fr   rv   r~   rc  rh   r   s     r?   rj   .Model._check_index_together.<locals>.<genexpr>  s%      
@Xf
6E4=111@X   (*z6All 'index_together' elements must be lists or tuples.zmodels.E009index_together)
rv   rb   r  r~   rc  r   r  r   r  _check_local_fieldsr   r  r   s      r?   ri  Model._check_index_together  s     #))22UDMBB?$   
@C		@X@X
 
 
 L$  F))22c55f>NOP 3MrC   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  s     r?   rj   /Model._check_unique_together.<locals>.<genexpr>  s(      
3 6E4=1113r  z7All 'unique_together' elements must be lists or tuples.zmodels.E011r  )
rv   rb   r  r~   rc  r   r  r   r  r  r  s      r?   rj  Model._check_unique_together  s     #))33eT]CC@$   
))33
 
 

 M$  F))33c55f>OPQ 4MrC   c           
         / n[        5       nU R                  R                   GH  nUR                  S   S:X  d"  UR                  S   R	                  5       (       a2  UR                  [        R                  " SUR                  -  U SS95        [        UR                  5      UR                  :  a>  UR                  [        R                  " SUR                  UR                  4-  U SS95        UR                  (       d  M  UR                   H*  nUR                  S U R                  U5       5       5        M,     GM     U GH  n[        R                  " X`5      (       d  M!  [         U   nUR"                  R$                  (       dx  S	U R                  R&                  ;   d^  [)        S
 U R                  R                   5       5      (       a3  UR                  [        R*                  " SUR,                  -  SU SS95        UR"                  R.                  (       dx  SU R                  R&                  ;   d^  [)        S U R                  R                   5       5      (       a3  UR                  [        R*                  " SUR,                  -  SU SS95        UR"                  R0                  (       a  GMn  SU R                  R&                  ;   a  GM  [)        S U R                  R                   5       5      (       d  GM  UR                  [        R*                  " SUR,                  -  SU SS95        GM     U R                  R                   VVV	s/ s H  oDR2                    H  u  pUPM	     M     n
nnn	XR                  R                   VVs/ s H  oDR4                    H  oPM     M     snn-  n
X-  n
UR7                  U R9                  U
S5      5        U$ s  sn	nnf s  snnf )z/Check fields, names, and conditions of indexes.r   rG  z@The index name '%s' cannot start with an underscore or a number.zmodels.E033r}  z8The index name '%s' cannot be longer than %d characters.zmodels.E034c              3   *   #    U  H	  oS    v   M     g7f)r   Nr<   )rh   refs     r?   rj   'Model._check_indexes.<locals>.<genexpr>  s      &*N3A*Ns   supports_partial_indexesc              3   <   #    U  H  oR                   S Lv   M     g 7fr   )	conditionrh   r   s     r?   rj   r    s     Q?PeooT1?Ps   z,%s does not support indexes with conditions.zLConditions will be ignored. Silence this warning if you don't care about it.zmodels.W037rt  supports_covering_indexesc              3   8   #    U  H  oR                   v   M     g 7fr   )includer  s     r?   rj   r    s     C1Bmm1Br   z1%s does not support indexes with non-key columns.zQNon-key columns will be ignored. Silence this warning if you don't care about it.zmodels.W040supports_expression_indexesc              3   8   #    U  H  oR                   v   M     g 7fr   )contains_expressionsr  s     r?   rj   r    s     P>OU00>Or   z+%s does not support indexes on expressions.zKAn index won't be created. Silence this warning if you don't care about it.zmodels.W043r   )r   rb   r   rO   isdigitrB  r   r  r  max_name_lengthr  expressionsr   _get_expr_referencesr   r  r   r)  r  r  r   ry  r  r  r  fields_ordersr  r  r  )r   r\  r  
referencesr   
expressionr   r   r   rG  r   r  s               r?   rk  Model._check_indexes  s3    U
YY&&E zz!}#uzz!}'<'<'>'>LL').4(	 5::!6!66LL&).U5J5J(KL(	 )))"'"3"3J%% &*-*B*B:*N&  #4- '4 B--b66$RJ##<<-1O1OOQsyy?P?PQQQNNF$112:  (	 ##==.#))2P2PPC1B1BCCCNNK$112B  (	 ##???0CII4R4RRPcii>O>OPPPNNE$112:  (	Q j  #yy00
0eATATXUEATE0 	 
 			(9(9W(9ug77(9WWc--fi@A
 Xs   !OOc                    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 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        Ma  XPR                  R                  ;  aI  UR                  [        R                  " SU< SU< SU R                  R                  < S	3SU SS95        M  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 'rp   zmodels.E013r}  z' refers to field 'z' which is not local to model 'z4This issue may be caused by multi-table inheritance.zmodels.E016rt  z#' refers to the nonexistent field 'zmodels.E012)	django.dbr  rb   r  rO   rX   r	  rv   r   ManyToManyRelrB  r   r  r   r9  r  )r   r   optionr  forward_fields_mapr   r  ru  s           r?   r  Model._check_local_fields1  sR   $  YY**5*9E-2uzz*ui((495==1 :
  J&*6 e00&2F2FGGMM !' * & !$,
 ))"8"88MM'-z399;P;PR!W #, 9= !P K  LL #&
  (
 
s    D%%8E"!E"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)rv   r+  r   s     r?   rj   (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     r?   rj   r    s     6v!..%%v   Nr)  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   )rr   concreterO   r	  r   related_query_namer   s     r?   rj   r    sQ        BA NN1:: VVQYY'''44689 Bs   A"A$)rb   _ordering_clashr   r  r   rn   rv   rc  r~   r   rB  r  r)  r  re  
path_infosto_optsr   r
   AttributeErrorget_transform
get_lookupr   r   from_iterabler   rh  r  )r   r  r   _fieldsrelated_fieldsr   r   _clsfldpartinvalid_fieldsr   valid_fieldsinvalid_fields                 r?   rl  Model._check_orderingh  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                   Hm  nUR                  5       u  pUR                  b  M$  U
c  M)  [        U
5      U:  d  M:  UR                  [        R                  " SU
< SU< SU< S3SU SS95        Mo     U R                  R                   H  n[!        UR"                  R$                  [&        5      (       a  M.  UR"                  R$                  R                  R                   Hm  nUR                  5       u  pUR                  b  M$  Uc  M)  [        U5      U:  d  M:  UR                  [        R                  " S	U< SU< SU< S3S
U SS95        Mo     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.E018rt  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   opsr  r)  truncates_namesrb   r   r  	db_columnr  rB  r   r  r   rv   r   r|  r+  )r   r\  r  allowed_lendb_aliasr   r   r  r   rG  r  m2mrel_names                r?   rb  Model._check_long_column_names  s    I B--b66$RJ(nn<<>O&**=*=*M*M&"1K!H$2"1K!H   M''A113NA
 #+${2LL 'X? O(	 (* --A!..00#66 ~~--33@@!446MM) ,H3MM  (h@!R !$,
 A .8 rC   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)rv   r*   childrenr~   r  r   r  r)   rO   rX   r  )r   exprchildlookuprY   src_exprs         r?   r  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 GHd  n[         R                  " X05      (       d  M!  [        U   nUR                  R                  (       dx  SU R
                  R                  ;   d^  [        S U R
                  R                   5       5      (       a3  UR                  [        R                  " SUR                  -  SU SS95        UR                  R                  (       dx  SU R
                  R                  ;   d^  [        S U R
                  R                   5       5      (       a3  UR                  [        R                  " S	UR                  -  SU S
S95        UR                  R                  (       dx  SU R
                  R                  ;   d^  [        S U R
                  R                   5       5      (       a3  UR                  [        R                  " SUR                  -  SU SS95        UR                  R                  (       dx  SU R
                  R                  ;   d^  [        S U R
                  R                   5       5      (       a3  UR                  [        R                  " SUR                  -  SU SS95        UR                  R                   (       dx  SU R
                  R                  ;   d^  [        S U R
                  R                   5       5      (       a3  UR                  [        R                  " SUR                  -  SU SS95        UR                  R"                  (       dx  SU R
                  R                  ;   d^  [        S U R
                  R                   5       5      (       a3  UR                  [        R                  " SUR                  -  SU SS95        [%        [&        R(                  " S U R
                  R                   5       5      5      n[%        5       nU R
                  R                   GH  n[+        U[,        5      (       Ga   UR                  R                  (       d  SU R
                  R                  ;  aI  [+        UR.                  [0        5      (       a*  UR3                  U R5                  UR.                  5      5        UR                  R                   (       d  SU R
                  R                  ;  aJ  UR6                  (       a6  UR8                   H#  nUR3                  U R5                  U5      5        M%     GM  GM  GM  [+        U[:        5      (       d  GM2  UR                  R                  (       d  SU R
                  R                  ;  d  GMj  [+        UR<                  [0        5      (       a*  UR3                  U R5                  UR<                  5      5        [        S UR<                  R?                  5        5       5      (       d  GM  UR                  [        R                  " SUR@                  < S3SU S S95        GM     U GH'  tpU	S!:w  a  URC                  U	5        U
(       d  M%   U	S!:X  a  U R
                  RD                  nOU R
                  RG                  U	5      nURH                  (       a"  URJ                  (       d  URL                  (       a  M   U
S"   n[Q        US#5      (       d  M  [Q        US$5      (       d  M  URS                  U5      b  M  URU                  U5      b  M  UR                  [        RV                  " S%[X        RZ                  " U	/U
-   5      -  U S&S'95        GM*     UR]                  U R_                  US(5      5        GMg     U$ ! [N         a     GMb  f = f))N supports_table_check_constraintsc              3   B   #    U  H  n[        U[        5      v   M     g 7fr   )rv   r   rh   r%  s     r?   rj   +Model._check_constraints.<locals>.<genexpr>B	  s!      "7J :77"7r  z&%s does not support check constraints.zOA constraint won't be created. Silence this warning if you don't care about it.zmodels.W027rt  r  c              3   l   #    U  H*  n[        U[        5      =(       a    UR                  S Lv   M,     g 7fr   )rv   r   r  r  s     r?   rj   r  U	  s9       #8J :'78 5((45"7   24z7%s does not support unique constraints with conditions.zmodels.W036&supports_deferrable_unique_constraintsc              3   l   #    U  H*  n[        U[        5      =(       a    UR                  S Lv   M,     g 7fr   )rv   r   
deferrabler  s     r?   rj   r  j	  s9       #8J :'78 6))56"7r  z2%s does not support deferrable unique constraints.zmodels.W038r  c              3   h   #    U  H(  n[        U[        5      =(       a    UR                  v   M*     g 7fr   )rv   r   r  r  s     r?   rj   r  ~	  s-      "7J :'78OZ=O=OO"7   02z<%s does not support unique constraints with non-key columns.zmodels.W039r  c              3   h   #    U  H(  n[        U[        5      =(       a    UR                  v   M*     g 7fr   )rv   r   r  r  s     r?   rj   r  	  s4       #8J :'78 4334"7r   z6%s does not support unique constraints on expressions.zmodels.W044*supports_nulls_distinct_unique_constraintsc              3   l   #    U  H*  n[        U[        5      =(       a    UR                  S Lv   M,     g 7fr   )rv   r   nulls_distinctr  s     r?   rj   r  	  s9       #8J :'78 :--T9:"7r  z;%s does not support unique constraints with nulls distinct.zmodels.W047c              3      #    U  H7  n[        U[        5      (       d  M  / UR                  QUR                  Q7v   M9     g 7fr   )rv   r   r   r  r  s     r?   rj   r  	  s8      $&;
!*.>? >j''=**<*<=&;s
   A"Ac              3   B   #    U  H  n[        U[        5      v   M     g 7fr   )rv   r!   )rh   r  s     r?   rj   r  	  s!      (B 'tV44(Br  zCheck constraint zS contains RawSQL() expression and won't be validated during the model full_clean().z0Silence this warning if you don't care about it.zmodels.W045r)  r   r  r  z.'constraints' refers to the joined field '%s'.zmodels.E041r}  r   )0r   r  r   r)  r  rb   r  r   r   rB  r   ry  r  r  r  r  r  r"  r   r   r  rv   r   r  r*   r   r  r  r  r   r#  flattenrO   r   r)  r  re  many_to_manyone_to_manyr
   rX   r  r  r  r   r   r  r  )r   r\  r  r   r   r   r  r%  r  ru  lookupsr   first_lookups                r?   rm  Model._check_constraints8	  si   B--b66$RJ##DD59W9WW "%))"7"7   NN@$112B  (	 ##<<-1O1OO  #&))"7"7  
 NN&(2(?(?@B  (	 ##JJ;99112  #&))"7"7  
 NNL$112B  (	 ##==.#))2P2PP "%))"7"7   NN#%/%<%<=B  (	 ##??0CII4R4RR  #&))"7"7  
 NN')3)@)@AB  (	 ##NN@yy556   #&))"7"7  
 NN*,6,C,CDB  (	 ## $&)ii&;&;$ F J!ii33
j*:;;"++DD5"yy==>$Z%9%91=="))44Z5I5IJ #++GG8"yy==>$99*4*@*@J&--c.F.Fz.RS +A :>
  
O<<"++LL="yy==> &j&6&6::&-- # 8 89I9I J  (2(8(8(@(@(B   #MM &&7
7J KE %F). ),'4
!"? 4X )3$
%JJz*!T) #		 #		 3 3J ? ,,0B0BeFWFW  GX
  'qzE?33|44++L9A((6>MML(oozlW.DEF #,	1 )3@ MM#11&-HIe f ' ) s   A+]00
]?>]?)r  r[  r  r   )NN)FFNN)FFFNN)FNFFNNr  )NTT)JrG   rH   rI   rJ   r  classmethodr"  r@   rE   r/  r3  r=  r6  rN  rQ  rU  r   r)  rX  ro  rr  rv  ry  alters_datar  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r5  r,  rJ  rP  rT  rS  r#  rn  ro  r]  r^  r_  r`  ra  rc  rd  rh  re  rf  rg  ri  rj  rk  r  rl  rb  r  rm  rK   r_   r   s   @r?   r   r     sF   p2d 
 
<E!
1"$,.; 
+{	+B
F/PU,$ QU<
| D QU
 E * DL !I HL-b _B,8
4l	" F
 G
*(.M* =*~/b>
"@*(-*^*8 # #J  >  ,  4 
 
     ! !F  $ C CJ  0  .  (    8  : X Xt 4 4l j jX P Pd > > U UrC   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)r)  r  r  r<   )rb   r   get_forward_related_filterr   ra  rb  bulk_update	enumerate)r>   ordered_objid_listri  	order_wrtr  r  r)  s           r?   method_set_orderr7  
  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<   )rb   r   r1  r)  rO   r   rb  values_list)r>   r4  r6  r  pk_names        r?   method_get_orderr<  !
  sd    !!77I66t<K""''G%%44@@t@TTrC   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   rG   lowerr   r<  r7  )r   r  s     r?   r   r   (
  sZ    --//&.
 --//&.rC   c                 z    [        U [        5      (       a  [        R                  " U 6 nOU nUR	                  U5      $ )z7Used to unpickle Model subclasses with deferred fields.)rv   r~   r   r  ru   )model_idr   s     r?   r:  r:  :
  s3    (E"") ==rC   Tr   )^r   rV   rJ  	functoolsr   	itertoolsr   asgiref.syncr   r7  django.appsr   django.confr   django.corer   django.core.exceptionsr	   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.constraintsr   r   django.db.models.deletionr   r   django.db.models.expressionsr    r!   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,   r-   r.   r/   django.db.models.utilsr0   r1   django.utils.encodingr2   django.utils.hashabler3   django.utils.textr4   r5   django.utils.translationr6   rG  r8   r  rS   rZ   rN   r\   r   r   r   r7  r<  r   r:  __safe_for_unpickle__r<   rC   r?   <module>rY     s       #  &        W V 1 J 8 @  0 , , '  @ + / 5 6" " :$P
X) X)v
 	5 	5C!J) C!ZBU
$  (, $rC   