基本的にこれを素早く簡単にするために、XOR Djangoテンプレートで実行することを探しています。コードでは、これはオプションではありません。
基本的に、ユーザーが2つの多対多オブジェクトのいずれかに属しているかどうかを確認する必要があります。
req.accepted.all
そして
req.declined.all
今、それらはどちらか一方にしか入れることができません(したがってXOR条件付き)。ドキュメントを見て回ると、私が理解できる唯一のものは次のとおりです。
{% if user.username in req.accepted.all or req.declined.all %}
私がここで抱えている問題は、user.usernameが実際にreq.accepted.allに現れる場合、条件をエスケープするが、req.declined.allにある場合は条件節に従うことです。
ここに何かが足りませんか?
and
はor
よりも優先度が高いため、分解バージョンを書くことができます。
{% 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 %}
効率のために、with
を使用してクエリセットの再評価をスキップします。
{% 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 %}
受け入れられたものからの言い換えの言い換え:
取得するため:
{% if A xor B %}
行う:
{% if A and not B or B and not A %}
できます!