variable tutorial template for examples custom python django if-statement django-templates xor

python - tutorial - django templates examples



plantilla django if o declaraciĆ³n (2)

Respuesta reformulada de la aceptada:

Llegar:

{% if A xor B %}

Hacer:

{% if A and not B or B and not A %}

¡Funciona!

Básicamente para hacer esto rápido y simple, estoy buscando ejecutar un XOR condicional en la plantilla django. Antes de preguntar por qué no lo hago en el código, esta no es una opción.

Básicamente, necesito verificar si un usuario está en uno de dos objetos de muchos a muchos.

req.accepted.all

y

req.declined.all

Ahora solo pueden estar en uno u otro (de ahí el condicional XOR). Al mirar los documentos, lo único que puedo descubrir es lo siguiente

{% if user.username in req.accepted.all or req.declined.all %}

El problema que tengo aquí es que si user.username aparece en req.accepted.all, entonces escapa del condicional pero si está en req.declined.all, entonces seguirá la cláusula condicional.

¿Me estoy perdiendo de algo?


and tiene una precedencia mayor que or , por lo que solo puede escribir la versión descompuesta:

{% if user.username in req.accepted.all and user.username not in req.declined.all or user.username not in req.accepted.all and user.username in req.declined.all %}

Para mayor eficiencia, use with para omitir la reevaluación de los conjuntos de consultas:

{% with accepted=req.accepted.all declined=req.declined.all username=user.username %} {% if username in accepted and username not in declined or username not in accepted and username in declined %} ... {% endif %} {% endwith %}