, если вы хотите остаться СУХИМ, используйте включение.
{% if foo %}
{% with a as b %}
{% include "snipet.html" %}
{% endwith %}
{% else %}
{% with bar as b %}
{% include "snipet.html" %}
{% endwith %}
{% endif %}
или, что еще лучше, было бы написать метод для модели, который инкапсулирует основную логику:
def Patient(models.Model):
....
def get_legally_responsible_party(self):
if self.age > 18:
return self
else:
return self.parent
Затем в шаблоне:
{% with patient.get_legally_responsible_party as p %}
Do html stuff
{% endwith %}
Затем в будущем, если логика для того, кто несет юридическую ответственность, изменится, у вас есть единственное место, чтобы изменить логику - гораздо более СУХОЙ, чем необходимость менять операторы в дюжине шаблонов.