bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


django_lliga

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
django_lliga [2026/03/10 15:19]
enric_mieza_sanchez [Implementar admin panel]
django_lliga [2026/03/10 17:08] (actual)
enric_mieza_sanchez [Implementar admin panel]
Línia 127: Línia 127:
 Vigileu, però, la versió de la documentació que consulteu. Vigileu, però, la versió de la documentació que consulteu.
  
 +<WRAP todo>
 Customitza les interfícies del //admin panel// per tal que puguis: Customitza les interfícies del //admin panel// per tal que puguis:
   * Partits:   * Partits:
Línia 138: Línia 139:
       * només mostri els jugadors dels dos equips del partit.       * només mostri els jugadors dels dos equips del partit.
       * només mostri els dos equips del partit.        * només mostri els dos equips del partit. 
 +</WRAP>
  
 {{ django:partit-event-inline.png }} {{ django:partit-event-inline.png }}
Línia 173: Línia 175:
 </file> </file>
  
-Podem millorar el EventInline restringint els jugadors que només ens mostri els dels equips del partit:+Podem millorar el ''EventInline'' restringint els jugadors que només ens mostri els dels equips del partit:
  
 <file python admin.py> <file python admin.py>
Línia 181: Línia 183:
     ordering = ("temps",)     ordering = ("temps",)
     def formfield_for_foreignkey(self, db_field, request, **kwargs):     def formfield_for_foreignkey(self, db_field, request, **kwargs):
-        # filtrem els jugadors i només deixem els que siguin d'algun dels 2 equips (local o visitant) +        if "object_id" not in request.resolver_match.kwargs: 
-        if db_field.name == "jugador":+            # si no hi ha "object_id" no fem res (sol cridar-se en el "add Partit" 
 +            pass 
 +        elif db_field.name == "jugador": 
 +            Filtrem els jugadors i només deixem els que siguin d'algun dels 2 equips (local o visitant)
             partit_id = request.resolver_match.kwargs['object_id']             partit_id = request.resolver_match.kwargs['object_id']
             partit = Partit.objects.get(id=partit_id)             partit = Partit.objects.get(id=partit_id)
-            jugadors_local [jugador.id for jugador in partit.local.jugadors.all()] +            # Obtenim dos querysets amb els jugadors locals i visitants 
-            jugadors_visitant [jugador.id for jugador in partit.visitant.jugadors.all()] +            jugadors_locals = partit.local.jugadors.all() 
-            jugadors jugadors_local + jugadors_visitant +            jugadors_visitants = partit.visitant.jugadors.all() 
-            kwargs["queryset"] = Jugador.objects.filter(id__in=jugadors)+            # Fusionem els dos querysets amb | (Union en BD) 
 +            kwargs["queryset"] = jugadors_locals | jugadors_visitants
         return super().formfield_for_foreignkey(db_field, request, **kwargs)         return super().formfield_for_foreignkey(db_field, request, **kwargs)
 </file> </file>
 +
 +<WRAP todo>
 +Modifica el EventIinline perquè també filtri els equips que es mostren en el desplegable. Només ha de mostrar els dos equips que s'enfronten.
 +</WRAP>
  
 <-- <--
django_lliga.1773155970.txt.gz · Darrera modificació: 2026/03/10 15:19 per enric_mieza_sanchez