Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
django_lliga [2024/06/26 16:06] enric_mieza_sanchez [Crear model] |
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. | ||
| + | </ | ||
| {{ django: | {{ django: | ||
| Línia 173: | Línia 175: | ||
| </ | </ | ||
| - | Podem millorar el EventInline restringint els jugadors que només ens mostri els dels equips del partit: | + | Podem millorar el '' |
| <file python admin.py> | <file python admin.py> | ||
| Línia 181: | Línia 183: | ||
| ordering = (" | ordering = (" | ||
| def formfield_for_foreignkey(self, | def formfield_for_foreignkey(self, | ||
| - | # filtrem | + | |
| - | if db_field.name == " | + | # si no hi ha " |
| + | pass | ||
| + | elif db_field.name == " | ||
| + | | ||
| partit_id = request.resolver_match.kwargs[' | partit_id = request.resolver_match.kwargs[' | ||
| partit = Partit.objects.get(id=partit_id) | partit = Partit.objects.get(id=partit_id) | ||
| - | | + | |
| - | | + | jugadors_locals |
| - | | + | |
| - | kwargs[" | + | |
| - | return super().formfield_for_foreignkey(db_field, | + | kwargs[" |
| + | return super().formfield_for_foreignkey(db_field, | ||
| </ | </ | ||
| + | |||
| + | <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' | ||
| + | </ | ||
| <-- | <-- | ||
| Línia 200: | Línia 210: | ||
| Els //seeder// són programes que permeten la creació de dades falses per facilitar el test de l' | Els //seeder// són programes que permeten la creació de dades falses per facilitar el test de l' | ||
| - | En particular [[https:// | + | En particular [[https:// |
| + | (env) $ pip install faker | ||
| Podem crear el //seeder// dins una [[https:// | Podem crear el //seeder// dins una [[https:// | ||
| Línia 209: | Línia 220: | ||
| --> Proposta seeder crea_lliga# | --> Proposta seeder crea_lliga# | ||
| - | <file python management/ | + | Creeu les carpetes '' |
| + | $ mkdir -p futbol/ | ||
| + | |||
| + | **On < | ||
| + | |||
| + | Afegiu-hi el següent arxiu: | ||
| + | |||
| + | <file python | ||
| from django.core.management.base import BaseCommand, | from django.core.management.base import BaseCommand, | ||
| from django.utils import timezone | from django.utils import timezone | ||
| Línia 215: | Línia 233: | ||
| from datetime import timedelta | from datetime import timedelta | ||
| from random import randint | from random import randint | ||
| + | |||
| from lliga.models import * | from lliga.models import * | ||
| + | |||
| faker = Faker([" | faker = Faker([" | ||
| + | |||
| class Command(BaseCommand): | class Command(BaseCommand): | ||
| help = 'Crea una lliga amb equips i jugadors' | help = 'Crea una lliga amb equips i jugadors' | ||
| + | |||
| def add_arguments(self, | def add_arguments(self, | ||
| parser.add_argument(' | parser.add_argument(' | ||
| + | |||
| def handle(self, | def handle(self, | ||
| titol_lliga = options[' | titol_lliga = options[' | ||
| - | lliga = Lliga.objects.filter(titol=titol_lliga) | + | lliga = Lliga.objects.filter(nom=titol_lliga) |
| if lliga.count()> | if lliga.count()> | ||
| print(" | print(" | ||
| return | return | ||
| + | |||
| print(" | print(" | ||
| - | lliga = Lliga( | + | lliga = Lliga( |
| - | inici=timezone.now(), | + | |
| - | final=timezone.now()+timedelta(days=11*30)) | + | |
| lliga.save() | lliga.save() | ||
| + | |||
| print(" | print(" | ||
| prefixos = [" | prefixos = [" | ||
| Línia 247: | Línia 263: | ||
| prefix += " " | prefix += " " | ||
| nom = prefix + ciutat | nom = prefix + ciutat | ||
| - | equip = Equip(ciutat=ciutat, | + | equip = Equip(ciutat=ciutat, |
| # | # | ||
| equip.save() | equip.save() | ||
| lliga.equips.add(equip) | lliga.equips.add(equip) | ||
| + | |||
| print(" | print(" | ||
| for j in range(25): | for j in range(25): | ||
| - | nom = faker.first_name() | + | nom = faker.name() |
| - | | + | |
| - | | + | |
| - | jugador = Jugador(nom=nom, | + | jugador = Jugador(nom=nom, |
| + | edat=edat,equip=equip) | ||
| # | # | ||
| jugador.save() | jugador.save() | ||
| - | fitxa = Fitxa(jugador=jugador, | + | |
| - | fitxa.save() | + | |
| print(" | print(" | ||
| for local in lliga.equips.all(): | for local in lliga.equips.all(): | ||
| Línia 352: | Línia 367: | ||
| </ | </ | ||
| <-- | <-- | ||
| + | |||
| + | <WRAP todo> | ||
| + | **View classificació** | ||
| + | |||
| + | Crea la view de classificació i afegeix els següents camps: | ||
| + | * Punts | ||
| + | * Victòries | ||
| + | * Empats | ||
| + | * Derrotes | ||
| + | * Gols a favor | ||
| + | * Gols en contra | ||
| + | * Gol average | ||
| + | |||
| + | Afegiu també el nom de la lliga. | ||
| + | </ | ||
| \\ | \\ | ||
| Línia 490: | Línia 520: | ||
| Elabora formularis per: | Elabora formularis per: | ||
| + | - Crear jugador (amb ModelForm). | ||
| - Crear lliga. | - Crear lliga. | ||
| * Assegura' | * Assegura' | ||
| Línia 563: | Línia 594: | ||
| \\ | \\ | ||
| + | |||
| + | ===== Exercicis de consultes ===== | ||
| + | |||
| + | - Lligues que contenen la paraula " | ||
| + | - Equips que comença el seu nom amb " | ||
| + | - Equips que tenen " | ||
| + | - Equips que acaben el seu nom en " | ||
| + | - Equips que tinguin judadors amb el nom XXX | ||
| + | - Jugadors que hagin marcat algun gol. | ||
| + | |||