+
    Tj0                         R t ^ RIHt ^ RIHt ^ RIHt ^RIHt ^RI	H
t
  ! R R]
4      t ! R R	]4      t ! R
 R]4      t ! R R]4      tR# )al  
"Rel objects" for related fields.

"Rel objects" (for lack of a better name) carry information about the relation
modeled by a related field and provide some utility functions. They're stored
in the ``remote_field`` attribute of the field.

They also act as reverse fields for the purposes of the Meta API because
they're the closest concept currently available.
)
exceptions)cached_property)make_hashable)BLANK_CHOICE_DASH)FieldCacheMixinc                     a  ] tR t^t o RtRtRtRtRtRt	Rt
R#R lt]R 4       t]R 4       t]R 4       t]R	 4       t]R
 4       t]R 4       t]R 4       t]R 4       t]R 4       tR tR tR tR t]R 4       tR t]R 4       tR tR tR t R]!RR$3R lt"R t#R t$R t%]R 4       t&R%R lt'R%R lt(]R  4       t)]R! 4       t*R"t+V t,R# )&ForeignObjectRelz
Used by ForeignObject to store information about the relation.

``_meta.get_fields()`` returns this class to provide access to the field
flags for the reverse relation.
TFNc                    Wn         W n        W0n        W@n        Vf   / MTV n        W`n        Wpn        RV n        RV n        R # )NFT)	fieldmodelrelated_namerelated_query_namelimit_choices_toparent_link	on_deletesymmetricalmultiple)selfr
   tor   r   r   r   r   s   &&&&&&&&\/var/www/idalgo/venv/lib/python3.14/site-packages/django/db/models/fields/reverse_related.py__init__ForeignObjectRel.__init__'   sD     

("4&6&>DT&"     c                h    \        V P                  4      ;'       d    V P                  R,          R8H  # )z$Should the related object be hidden?+)boolr   r   s   &r   hiddenForeignObjectRel.hidden@   s-     D%%&GG4+<+<R+@C+GGr   c                6    V P                   P                  4       # N)r
   r   r   s   &r   nameForeignObjectRel.nameE   s    zz,,..r   c                    V P                   # r!   )r
   r   s   &r   remote_fieldForeignObjectRel.remote_fieldI   s    zzr   c                    V P                   R,          P                  p\        V4      ^8  d   \        P                  ! R4      hV^ ,          # )zw
When filtering against this relation, return the field on the remote
model against which the filtering should happen.
z1Can't use target_field for multicolumn relations.r   )
path_infostarget_fieldslenr   
FieldError)r   r)   s   & r   target_fieldForeignObjectRel.target_fieldM   sH     +99}!''C  Qr   c                |    V P                   P                  '       g   \        R 4      hV P                   P                  # )zVThis property can't be accessed before self.field.contribute_to_class has been called.)r
   r   AttributeErrorr   s   &r   related_modelForeignObjectRel.related_modelZ   s6    zz #  zzr   c                .    V P                   P                  # r!   )r
   many_to_manyr   s   &r   r3   ForeignObjectRel.many_to_manyc   s    zz&&&r   c                .    V P                   P                  # r!   )r
   one_to_manyr   s   &r   many_to_oneForeignObjectRel.many_to_oneg       zz%%%r   c                .    V P                   P                  # r!   )r
   r7   r   s   &r   r6   ForeignObjectRel.one_to_manyk   r9   r   c                .    V P                   P                  # r!   )r
   
one_to_oner   s   &r   r=   ForeignObjectRel.one_to_oneo   s    zz$$$r   c                8    V P                   P                  V4      # r!   )r
   
get_lookup)r   lookup_names   &&r   r@   ForeignObjectRel.get_lookups   s    zz$$[11r   c                6    V P                   P                  4       # r!   )r
   get_lookupsr   s   &r   rD   ForeignObjectRel.get_lookupsv   s    zz%%''r   c                8    V P                   P                  V4      # r!   )r
   get_transform)r   r"   s   &&r   rG   ForeignObjectRel.get_transformy   s    zz''--r   c                6    V P                   P                  4       # r!   )r
   get_internal_typer   s   &r   rJ   "ForeignObjectRel.get_internal_type|   s    zz++--r   c                .    V P                   P                  # r!   )r
   db_typer   s   &r   rM   ForeignObjectRel.db_type   s    zz!!!r   c                    R \        V 4      P                  : RV P                  P                  P                  : RV P                  P                  P
                  : R2# )<z: .>)type__name__r0   _meta	app_label
model_namer   s   &r   __repr__ForeignObjectRel.__repr__   sC    J$$..$$//
 	
r   c           	         V P                   V P                  V P                  V P                  \	        V P
                  4      V P                  V P                  V P                  V P                  3	# r!   )
r
   r   r   r   r   r   r   r   r   r   r   s   &r   identityForeignObjectRel.identity   s\     JJJJ##$//0NNMM

 
	
r   c                v    \        WP                  4      '       g   \        # V P                  VP                  8H  # r!   )
isinstance	__class__NotImplementedr[   )r   others   &&r   __eq__ForeignObjectRel.__eq__   s*    %00!!}}..r   c                ,    \        V P                  4      # r!   )hashr[   r   s   &r   __hash__ForeignObjectRel.__hash__   s    DMM""r   c                ^    V P                   P                  4       pVP                  R R4       V# )r(   N)__dict__copypop)r   states   & r   __getstate__ForeignObjectRel.__getstate__   s)    ""$ 			,%r   c                    T;'       g    V P                   pV P                  P                  P                  V4      pV'       d   VP                  ! V!  pV'       d   TM. V Uu. uF  qfP
                  \        V4      3NK  	  up,           # u upi )z
Return choices with a default blank choices included, for use
as <select> choices for this field.

Analog of django.db.models.fields.Field.get_choices(), provided
initially for utilization by RelatedFieldListFilter.
)r   r0   _default_managercomplex_filterorder_bypkstr)r   include_blankblank_choicer   orderingqsxs   &&&&&  r   get_choicesForeignObjectRel.get_choices   st     ,DDt/D/D00??@PQh'B -2RT9URTQ44Q.RT9UUU9Us   #Bc                6    V P                   P                  4       # r!   )r
   get_reverse_joining_fieldsr   s   &r   get_joining_fields#ForeignObjectRel.get_joining_fields   s    zz4466r   c                8    V P                   P                  W!4      # r!   )r
   get_extra_restriction)r   aliasrelated_aliass   &&&r   r   &ForeignObjectRel.get_extra_restriction   s    zz//EEr   c                    RV n         R# )z
Set the related field's name, this is not available until later stages
of app loading, so set_field_name is called from
set_attributes_from_rel()
N
field_namer   s   &r   set_field_nameForeignObjectRel.set_field_name   s     r   c                "    V P                  4       # r!   )get_accessor_namer   s   &r   accessor_nameForeignObjectRel.accessor_name   s    %%''r   c                   V'       d   VP                   MV P                  P                   pT;'       g    V P                  pV P                  '       d%   V P                  '       d   WP                  8X  d   R # V P
                  '       d   V P
                  # VP                  V P                  '       d	   R,           # R,           # )N_set )rU   r0   r   r   r   r   rW   )r   r   optss   && r   r   "ForeignObjectRel.get_accessor_name   s     $u{{););)A)A++++=== EZZ$7$$$DMMM&BBrBBr   c                t    V'       d   V P                   P                  V4      # V P                   P                  # r!   )r
   get_reverse_path_inforeverse_path_infos)r   filtered_relations   &&r   get_path_infoForeignObjectRel.get_path_info   s+    ::334EFF::000r   c                "    V P                  4       # r!   )r   r   s   &r   r(   ForeignObjectRel.path_infos   s    !!##r   c                    V P                   # )zl
Return the name of the cache key to use for storing an instance of the
forward model on the reverse model.
)r   r   s   &r   
cache_nameForeignObjectRel.cache_name   s     !!!r   )
r
   r   r   r   r   r   r   r   r   r   NNNFN r!   )-rT   
__module____qualname____firstlineno____doc__auto_createdconcreteeditableis_relationnullempty_strings_allowedr   r   r   r"   propertyr%   r,   r0   r3   r7   r6   r=   r@   rD   rG   rJ   rM   rX   r[   rb   rf   rm   r   rz   r~   r   r   r   r   r   r(   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s     LHHK D!2 H H / /   
  
      ' ' & & & & % %2(.. " "
 
 
/
#
 &V(7F ( (C$1 $ $ " "r   r   c                   h   a a ] tR t^t oRtRV 3R lltV 3R lt]V 3R l4       tR t	R t
RtVtV ;t# )	ManyToOneRela  
Used by the ForeignKey field to store information about the relation.

``_meta.get_fields()`` returns this class to provide access to the field
flags for the reverse relation.

Note: Because we somewhat abuse the Rel objects by using them as reverse
fields we get the funny situation where
``ManyToOneRel.many_to_one == False`` and
``ManyToOneRel.one_to_many == True``. This is unfortunate but the actual
ManyToOneRel class is a private API and there is work underway to turn
reverse relations into actual fields.
c	           
     @   < \         S	V `  VVVVVVVR 7       W0n        R# )r   r   r   r   r   N)superr   r   
r   r
   r   r   r   r   r   r   r   r_   s
   &&&&&&&&&r   r   ManyToOneRel.__init__  s3     	%1-# 	 	
 %r   c                H   < \         SV `  4       pVP                  R R4       V# )r0   N)r   rm   rk   )r   rl   r_   s   & r   rm   ManyToOneRel.__getstate__  s#    $&		/4(r   c                6   < . \         SV `  OV P                  N5# r!   )r   r[   r   r   r_   s   &r   r[   ManyToOneRel.identity$  s    3!34??33r   c                    V P                   P                  P                  V P                  4      pVP                  '       g(   \
        P                  ! RV P                  ,          4      hV# )zI
Return the Field in the 'to' object to which this relationship is tied.
zNo related field named '%s')r   rU   	get_fieldr   r   r   FieldDoesNotExist)r   r
   s   & r   get_related_fieldManyToOneRel.get_related_field(  sQ     

  **4??;~~~..-?  r   c                    V P                   ;'       g+    V P                  P                  P                  P                  V n         R # r!   )r   r   rU   rs   r"   r   s   &r   r   ManyToOneRel.set_field_name3  s+    //EETZZ-=-=-@-@-E-Er   r   r   )rT   r   r   r   r   r   rm   r   r[   r   r   r   r   __classcell__r_   r   s   @@r   r   r      s9     %.
 4 4	F Fr   r   c                   :   a a ] tR tRt oRtRV 3R lltRtVtV ;t# )OneToOneReli7  z
Used by OneToOneField to store information about the relation.

``_meta.get_fields()`` returns this class to provide access to the field
flags for the reverse relation.
c	                D   < \         S	V `  VVVVVVVVR 7       RV n        R# )r   FN)r   r   r   r   s
   &&&&&&&&&r   r   OneToOneRel.__init__?  s8     	%1-# 	 		
 r   )r   r   )	rT   r   r   r   r   r   r   r   r   r   s   @@r   r   r   7  s      r   r   c                   V   a a ] tR tRt oRtRV 3R llt]V 3R l4       tR tRt	Vt
V ;t# )ManyToManyReliX  z
Used by ManyToManyField to store information about the relation.

``_meta.get_fields()`` returns this class to provide access to the field
flags for the reverse relation.
c
                   < \         S
V `  VVVVVR 7       V'       d   V	'       g   \        R4      hWpn        V'       d   V'       g   \        R4      hWn        W`n        Wn        R# ))r   r   r   z4Can't supply a through model and db_constraint=Falsez5Cannot specify through_fields without a through modelN)r   r   
ValueErrorthroughthrough_fieldsr   db_constraint)r   r
   r   r   r   r   r   r   r   r   r_   s   &&&&&&&&&&r   r   ManyToManyRel.__init__`  sa     	%1- 	 	
 =STT'TUU,&*r   c                x   < . \         SV `  OV P                  N\        V P                  4      NV P
                  N5# r!   )r   r[   r   r   r   r   r   s   &r   r[   ManyToManyRel.identity  sK    
W
LL
 $--.
 	
 	
r   c                L   V P                   P                  pV P                  '       d$   VP                  V P                  ^ ,          4      pMGVP                   F7  p\        VRR4      pV'       g   K  VP                  V P                  8X  g   K7   M	  XP                  ^ ,          # )zr
Return the field in the 'to' object to which this relationship is tied.
Provided for symmetry with ManyToOneRel.
r%   N)r   rU   r   r   fieldsgetattrr   foreign_related_fields)r   r   r
   rels   &   r   r   ManyToManyRel.get_related_field  s~    
 ||!!NN4#6#6q#9:Ee^T:3399

2 % ++A..r   )r   r   r   r   )NNNTNNT)rT   r   r   r   r   r   r   r[   r   r   r   r   r   s   @@r   r   r   X  s-     +> 
 
/ /r   r   N)r   django.corer   django.utils.functionalr   django.utils.hashabler   r   r   mixinsr   r   r   r   r   r   r   r   <module>r      sT   	 # 3 /  #b" b"J;F# ;F|, B=/$ =/r   