creylopez 9 месяцев назад
Родитель
Сommit
53a6d1f9c9
1 измененных файлов с 36 добавлено и 0 удалено
  1. 36 0
      parejas-forms2.py

+ 36 - 0
parejas-forms2.py

@@ -0,0 +1,36 @@
+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')