| 123456789101112131415161718192021222324252627282930313233343536 |
- from django import forms
- from django.contrib.auth import get_user_model
- from .models import Reserva
- User = get_user_model()
- class ReservaForm(forms.ModelForm):
- acompanante = forms.ModelChoiceField(
- queryset=User.objects.none(),
- required=False,
- label="Acompañante"
- )
- class Meta:
- model = Reserva
- fields = ['acompanante']
- def __init__(self, *args, **kwargs):
- evento = kwargs.pop('evento', None)
- usuario = kwargs.pop('usuario', None)
- super().__init__(*args, **kwargs)
- if evento and evento.para_parejas:
- # Ordenar alfabéticamente por nombre y excluir al propio usuario
- self.fields['acompanante'].queryset = (
- User.objects.exclude(id=usuario.id)
- .order_by('first_name', 'last_name', 'username')
- )
- # Mostrar el nombre completo o username en las opciones
- self.fields['acompanante'].label_from_instance = (
- lambda obj: f"{obj.get_full_name() or obj.username}"
- )
- else:
- # Si el evento no es para parejas, quitar el campo
- self.fields.pop('acompanante')
|