django - استخدام "إف" في قالب مع علامة قالب مخصص مع وسيطات متعددة



python-3.x django-templates (1)

لقد كتبت علامة قالب مخصص للاستعلام عن قاعدة البيانات الخاصة بي وتحقق مما إذا كانت القيمة في قاعدة البيانات تطابق سلسلة معينة:

@register.simple_tag
def hs_get_section_answer(questionnaire, app, model, field, comp_value):

    model = get_model(app, model)
    modal_instance = model.objects.get(questionnaire=questionnaire)

    if getattr(modal_instance, field) == comp_value:
        return True
    else:
        return False

في نموذجي، يمكنني استخدام هذه العلامة كما يلي:

{% hs_get_section_answer questionnaire 'abc' 'def' 'ghi' 'jkl' %}

ترجع الدالة ترو أو فالس بشكل صحيح.

مشكلتي: أود أن أفعل شيئا من هذا القبيل:

{% if hs_get_section_answer questionnaire 'abc' 'def' 'ghi' 'jkl' %}
  SUCCESS
{% else %}
  FAILURE
{% endif %}

لكن هذا لا يعمل؛ يبدو كما لو أن علامة النموذج "إف" لا يمكنها التعامل مع وسيطات متعددة.

يمكن لأي شخص يعطيني تلميحا كيفية حل هذه المشكلة؟


عين نتيجة استدعاء علامة القالب لمتغير ثم اتصل {٪ إف٪} بهذه النتيجة

{% hs_get_section_answer questionnaire 'abc' 'def' 'ghi' 'jkl' as result %}
{% if result %}
...
{% endif %}

ستحتاج أيضا إلى تغيير علامة النموذج لاستخدام علامة تعيين بدلا من علامة بسيطة أيضا. راجع علامات التعيين دجانغو دوك: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#assignment-tags

@register.assignment_tag
def hs_get_section_answer(questionnaire, app, model, field, comp_value):

  model = get_model(app, model)
  modal_instance = model.objects.get(questionnaire=questionnaire)

  if getattr(modal_instance, field) == comp_value:
    return True
  else:
    return False




django-templates