मुझे पता है कि यह सीधा होना चाहिए, लेकिन कुछ कारणों से मुझे वांछित परिणाम नहीं मिल रहे हैं।

यह निर्देश: {{user.profile.role.all}} मेरे Django टेम्पलेट में इसे आउटपुट करता है:

<QuerySet [<Role: Creator>, <Role: Performer>, <Role: Venue>]>

मैं यह जांचना चाहता हूं कि इस क्वेरीसेट में कोई भूमिका है या नहीं; इसलिए, उदाहरण के लिए, यदि मैं यह जांचना चाहता हूं कि कोई भूमिका 'स्थल' मौजूद है या नहीं, तो दस्तावेज मुझे जो बताता है, उसके अनुसार मुझे यह करना चाहिए:

{% if "Venue" in user.profile.role.all %}

सही? हालांकि, ऊपर बताया गया if झूठा रिटर्न देता है। ऐसा क्यों है?

2
HBMCS 1 जून 2020, 21:43

1 उत्तर

सबसे बढ़िया उत्तर

इसके काम न करने का कारण यह है कि एक स्ट्रिंग एक Role से भिन्न है जिसका नाम समान स्ट्रिंग है।

आप टेम्पलेट में भूमिका नामों का एक सेट पास कर सकते हैं, उदाहरण के लिए:

context['role'] = Role.objects.filter(
    profile__user=self.request.user
).values_list('type', flat=True)
1
Willem Van Onsem 1 जून 2020, 19:05